2013-08-23 4 views
6

Я не могу понять, что случилось с моим кодом (Rails 4):Не может защищенные массовое назначение атрибуты в Rails 4

параметров из поста:

{:name => "name"} 

нового действие:

m=Menu.new(params.permit(:name)) 

Последняя строка этого кода генерирует «не массовый правопреемник защищенных атрибутов для меню: названия»

+1

Вы мигрирующие из Rails 3 и с использованием драгоценных камней protected_attributes [https://github.com/rails/protected_attributes](https://github.com/rails/protected_attributes)? – akhanubis

+0

Да. Могу ли я использовать protected_attributes с сильными параметрами? –

+3

Да, но рекомендуется перенести логику защиты атрибутов от protected_attributes к сильным параметрам. Если вы хотите сохранить оба, вам придется добавить 'attr_accessible: name' в вашу модель« Меню », но я бы удалил protected_attributes и применил сильные_параметры в каждом действии, так как это предпочтительный путь в Rails 4. – akhanubis

ответ

12

стандарта в y для использования сильных_параметров в Rails 4 заключается в создании частного контроллера в контроллере, который определяет разрешенные параметры. Например:

def new 
    @m = Menu.new(menu_params) 
end 

private 

def menu_params 
    params.require(:menu).permit(:name, :etc, :etc) 
end 

Затем вы можете удалить линию attr_accessible от модели.

См:

http://edgeapi.rubyonrails.org/classes/ActionController/StrongParameters.html http://railscasts.com/episodes/371-strong-parameters

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