Rails_admin 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 in mongo 配置文件来避免出现此错误,这生成 nil class.
的未定义方法
我有这些型号:
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 in mongo 配置文件来避免出现此错误,这生成 nil class.
的未定义方法