簡體   English   中英

Rails_admin 未定義的方法 `associations' 為 nil:NilClass

[英]Rails_admin undefined method `associations' for nil:NilClass

我有這些模型:

Class A 
   embeds_many :b
end

Class B
   belongs_to :c
end

Class C
end

我正在使用rails_admin和 mongoid。 在管理員中,當我在創建 A 實例時嘗試檢索 C 記錄列表時,出現此錯誤:

這只發生在生產環境中,而不是在開發中

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

查看 rails_admin 代碼,我們可以在mongoid.rb文件中看到那段代碼。

    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

如果我們注意這段代碼,我們可以看到如果默認情況下文檔不存在,則 model.find(id) 必須生成 Mongoid::Errors::DocumentNotFound 。

但是,在 mongoid 中,您可以使用raise_not_found_error: true在 mongo 配置文件中避免引發此錯誤,這會產生 nil 類的未定義方法。

github上的跟蹤問題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM