我使用Rails 4.1.1,ruby 2.1,mongodb,mongoid作为包装器,rails_admin用于创建管理界面
我知道' attr_accessible'不再适用于Rails4。所以我已经安装了' protected_attributes'宝石。但仍然没有成功,我仍在控制台收到警告
[RailsAdmin] Could not load model Company, assuming model is non existing. (undefined method `attr_accessible' for Company:Class)
因此,rails admin不加载类Company,因为我在模型中定义了attr_accessible。这是我公司的模特。
class Company
include Mongoid::Document
@@employees_strength = {0 => '0-10', 1 => '11-50', 2 => '51-100', 3 => '101-500', 4 => '501-1000', 5 => '1000+', 6 => '5000+'}
field :name, type: String
field :website, type: String
field :domain_name, type: String
field :strength, type: Integer
has_many :employees
has_one :admin, :class_name => 'Employee', :dependent => :destroy, :inverse_of => :organization
#attr_accessible :name, :website, :domain_name, :strength#, :admin_attributes, :allow_destroy => true
attr_accessible :admin_attributes
accepts_nested_attributes_for :admin, :allow_destroy => true
end
请任何身体都可以帮忙吗? 感谢
答案 0 :(得分:2)
Mongoid 4(在撰写本文时<= 4.0.2)不知道ActiveModel::MassAssignmentSecurity
gem提供的protected_attributes
模块。
因此,您必须手动在模型中包含行为,例如
class SomeDocument
include Mongoid::Document
include ActiveModel::MassAssignmentSecurity
field :some_field
attr_accessible :some_field
end
然而,这很快就会变得乏味,所以合理的替代方案是在定义任何模型之前将模块包含在Mongoid::Document
模块中。
module Mongoid
module Document
include ActiveModel::MassAssignmentSecurity
end
end