2014-06-27 4 views
3

Я использую Rails 4.1.1, Ruby 2.1, MongoDB, Mongoid в качестве оболочки, rails_admin для создания интерфейсов администраторанеопределенный метод `attr_accessible» с Mongoid

Я знаю, что 'attr_accessible' больше не работает для Rails4. Так что я установил драгоценный камень «protected_attributes». Но до сих пор никакого успеха я все еще получаю предупреждение в моей консоли

[RailsAdmin] Could not load model Company, assuming model is non existing. (undefined method `attr_accessible' for Company:Class) 

Так, не рельсы администратор не нагружают класс компании, потому что я определил 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 предоставленной 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 
+0

похоже, что он не работает с Rails 4: неинициализированная константа ActiveModel :: MassAssignmentSecurity –

+0

@LevDenisov Как уже упоминалось, это обеспечивается драгоценным камнем 'protected_attributes', он не поставляется с Rails 4 - вы должны добавить его в свой Gemfile. –

Смежные вопросы