Mailbox: Unable to Destroy Object

I am trying to destroy an object in my ROR application.

But I get the following error:

ActiveRecord::StatementInvalid: PG::UndefinedTable: ERROR: relation "mailboxer_conversation_opt_outs" does not exist LINE 5: WHERE a.attrelid = '"mailboxer_conversation_o... ^ : SELECT a.attname, format_type(a.atttypid, a.atttypmod), pg_get_expr(d.adbin, d.adrelid), a.attnotnull, a.atttypid, a.atttypmod FROM pg_attribute a LEFT JOIN pg_attrdef d ON a.attrelid = d.adrelid AND a.attnum = d.adnum WHERE a.attrelid = '"mailboxer_conversation_opt_outs"'::regclass AND a.attnum > 0 AND NOT a.attisdropped ORDER BY a.attnum from /app/vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.5.1/lib/active_record/connection_adapters/postgresql_adapter.rb:592:in `async_exec' from /app/vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.5.1/lib/active_record/connection_adapters/postgresql_adapter.rb:592:in `block in exec_no_cache' from /app/vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.5.1/lib/active_record/connection_adapters/abstract_adapter.rb:472:in `block in log' from /app/vendor/bundle/ruby/2.2.0/gems/activesupport-4.2.5.1/lib/active_support/notifications/instrumenter.rb:20:in `instrument' from /app/vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.5.1/lib/active_record/connection_adapters/abstract_adapter.rb:466:in `log' from /app/vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.5.1/lib/active_record/connection_adapters/postgresql_adapter.rb:592:in `exec_no_cache' from /app/vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.5.1/lib/active_record/connection_adapters/postgresql_adapter.rb:584:in `execute_and_clear' from /app/vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.5.1/lib/active_record/connection_adapters/postgresql/database_statements.rb:160:in `exec_query' from /app/vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.5.1/lib/active_record/connection_adapters/postgresql_adapter.rb:733:in `column_definitions' from /app/vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.5.1/lib/active_record/connection_adapters/postgresql/schema_statements.rb:186:in `columns' from /app/vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.5.1/lib/active_record/connection_adapters/schema_cache.rb:43:in `columns' from /app/vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.5.1/lib/active_record/connection_adapters/schema_cache.rb:49:in `columns_hash' from /app/vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.5.1/lib/active_record/associations/association_scope.rb:85:in `column_for' from /app/vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.5.1/lib/active_record/associations/association_scope.rb:94:in `bind' from /app/vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.5.1/lib/active_record/associations/association_scope.rb:103:in `last_chain_scope' from /app/vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.5.1/lib/active_record/associations/association_scope.rb:139:in `add_constraints' ... 72 levels... from /app/vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.5.1/lib/active_record/transactions.rb:281:in `block in destroy' from /app/vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.5.1/lib/active_record/transactions.rb:351:in `block in with_transaction_returning_status' from /app/vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.5.1/lib/active_record/connection_adapters/abstract/database_statements.rb:213:in `block in transaction' from /app/vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.5.1/lib/active_record/connection_adapters/abstract/transaction.rb:184:in `within_new_transaction' from /app/vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.5.1/lib/active_record/connection_adapters/abstract/database_statements.rb:213:in `transaction' from /app/vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.5.1/lib/active_record/transactions.rb:220:in `transaction' from /app/vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.5.1/lib/active_record/transactions.rb:348:in `with_transaction_returning_status' from /app/vendor/bundle/ruby/2.2.0/gems/activerecord-4.2.5.1/lib/active_record/transactions.rb:281:in `destroy' from (irb):5 from /app/vendor/bundle/ruby/2.2.0/gems/railties-4.2.5.1/lib/rails/commands/console.rb:110:in `start' from /app/vendor/bundle/ruby/2.2.0/gems/railties-4.2.5.1/lib/rails/commands/console.rb:9:in `start' from /app/vendor/bundle/ruby/2.2.0/gems/railties-4.2.5.1/lib/rails/commands/commands_tasks.rb:68:in `console' from /app/vendor/bundle/ruby/2.2.0/gems/railties-4.2.5.1/lib/rails/commands/commands_tasks.rb:39:in `run_command!' from /app/vendor/bundle/ruby/2.2.0/gems/railties-4.2.5.1/lib/rails/commands.rb:17:in `<top (required)>' from bin/rails:4:in `require' 

I assume this is due to this mailboxer_conversation_opt_outs table, which I do not have in my application.

I am using Rails 4.2 and:

 mailboxer (0.13.0) carrierwave (>= 0.5.8) foreigner (>= 0.9.1) rails (>= 3.2.0) 

Is there a migration file that I somehow missed?

Anyway, my object is connected to this table while the actual object cannot send messages?

thanks

+6
source share
2 answers

Is there a migration file that I somehow missed?

Yes, see itsnikolay answer and Upgrading documentation section.

Anyway, my object is connected to this table while the actual object cannot send messages?

The Model class probably still calls the acts_as_messageable method, which includes the Mailboxer::Models::Messageable Module in your ActiveRecord class, which declares a few additional associations on your model. If you don’t care about updating Mailboxer and just want to completely disconnect your model from Mailboxer, just delete the acts_as_messageable line and you can destroy your entries without any problems with the crashes.

+4
source

It looks like you are using a previous version of Mailboxer.

Try upgrading to a new one:

 $ rails generate mailboxer:namespacing_compatibility $ rails generate mailboxer:install -s $ rake db:migrate 

Taken from the documentation: https://github.com/mailboxer/mailboxer#upgrading

+2
source

Source: https://habr.com/ru/post/1014592/


All Articles