2017-01-31 5 views
6

Ich versuche ein Objekt in meiner ROR App zu zerstören.Mailboxer: Objekt kann nicht zerstört werden

Aber ich erhalte den folgenden Fehler:

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' 

ich diese raten zu dieser mailboxer_conversation_opt_outs Tabelle zusammenhängt ich nicht in meiner app haben.

Ich bin mit Rails 4.2 und:

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

Gibt es eine Migrationsdatei irgendwie habe ich verpasst?

Wie auch immer, wie kommt mein Objekt mit dieser Tabelle verbunden, während das eigentliche Objekt keine Nachrichten senden kann?

Dank

+1

Haben Sie versucht, 'rake db: migrate' auszuführen? Haben Sie '20131206080416_add_conversation_optout' in Ihrer Tabelle' schema_migrations'? –

+0

Nein. Ich nehme an, diese Migration wurde hinzugefügt * nach * Ich habe zuerst Mailbox eingerichtet (vor ca. 3 Jahren), oder? Wie soll ich das nachholen? –

+0

Nun, ich würde schauen, ob diese Migration in Ihrer 'schema_migrations' Tabelle existiert. Und auf meinem lokalen würde ich die Datenbank löschen und neu erstellen und die Migrationen erneut ausführen und sehen, ob das gelöst –

Antwort

2

Es ist wie Sie von Mailboxer verwenden vorherige Version aussieht.

Versuchen Sie, auf neue zu migrieren:

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

Entnommen Dokumentation: https://github.com/mailboxer/mailboxer#upgrading

+0

Er ist bereits auf '0.13.0' –

4

Is there a migration file I somehow missed?

Ja, itsnikolay's answer und die Upgrading Abschnitt der Dokumentation.

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

Ihre Modellklasse wahrscheinlich noch ruft die acts_as_messageable Methode, die die Mailboxer::Models::Messageable Module in Ihre Active Klasse umfasst, die declares several extra associations auf Ihrem Modell. Wenn Sie Mailboxer nicht aktualisieren möchten und nur Ihr Modell vollständig vom Mailboxer trennen möchten, löschen Sie einfach die Zeile acts_as_messageable, und Sie sollten in der Lage sein, Ihre Datensätze ohne weitere fehlerhafte Zuordnungsprobleme zu zerstören.

Verwandte Themen