2016-04-28 17 views
1

Ich habe diese Modelle:Rails_admin nicht definierte Methode `Verbände für nil: NilClass

Class A 
    embeds_many :b 
end 

Class B 
    belongs_to :c 
end 

Class C 
end 

Ich bin mit rails_admin und mongoid arbeiten. In admin, wenn ich versuche, um die Liste der C-Datensätze abzurufen, wenn ich eine A-Instanz bin Erstellen ich diesen Fehler:

Dies geschieht nur auf die Produktion envirnment nicht in Entwicklung

NoMethodError (undefined method `associations' for nil:NilClass): 
     /home/pablo/.rvm/gems/[email protected]/bundler/gems/rails_admin-355dc80f8a20/lib/rails_admin/adapters/mongoid/abstract_object.rb:10:in `initialize' 
     /home/pablo/.rvm/gems/[email protected]/bundler/gems/rails_admin-355dc80f8a20/lib/rails_admin/adapters/mongoid.rb:24:in `new' 
     /home/pablo/.rvm/gems/[email protected]/bundler/gems/rails_admin-355dc80f8a20/lib/rails_admin/adapters/mongoid.rb:24:in `get' 
     /home/pablo/.rvm/gems/[email protected]/bundler/gems/rails_admin-355dc80f8a20/app/controllers/rails_admin/main_controller.rb:138:in `get_association_scope_from_params' 

Antwort

1

Taking a schau dir rails_admin code an, wir können das Stück Code in mongoid.rb Datei sehen.

def get(id) 
     AbstractObject.new(model.find(id)) 
     rescue => e 
     raise e if %w(
      Mongoid::Errors::DocumentNotFound 
      Mongoid::Errors::InvalidFind 
      Moped::Errors::InvalidObjectId 
      BSON::InvalidObjectId 
     ).exclude?(e.class.to_s) 
     end 

Wenn wir die Aufmerksamkeit auf diesen Code bezahlen wir, dass model.find (id) sehen müssen einen Fehler :: Mongoid erzeugen :: DocumentNotFound wenn Dokument nicht standardmäßig vorhanden ist.

In Mongoid können Sie jedoch vermeiden die Erhöhung dieses Fehlers mit raise_not_found_error: true in Mongo-Konfigurationsdatei, dies erzeugt die undefinierte Methode der Nullklasse.

Tracking issue on github

+0

Tausend Dank! Ich habe stundenlang mit diesen Fehlern gekämpft und es schien, dass niemand es vorher erfahren hat. – hcarreras

Verwandte Themen