0

Я нахожусь на Rails3, у меня две модели, User и Post. Пользователь имеет сообщения как вложенные атрибуты. когда я пытаюсь сохранить пользователь, то я получаю Не удается массово правопреемником защищенные атрибуты: .....Получение «Невозможно назначить защищенные атрибуты:» для nested_attributes

ответ

0

если определения модели подобны следующим образом:

user.rb

class User < ActiveRecord::Base 
    attr_accessible :name, :posts_attributes 
    has_many :posts 
    accepts_nested_attributes_for :posts 
end 

post.rb

class Post < ActiveRecord::Base 
    attr_accessible :title, :content :user_id 
end 

тогда все должно быть хорошо. Вы можете сохранить пользователя с сообщениями как вложенные атрибуты.

Вот пример коды для начинающих :)

https://github.com/railscash/sample_change_user_role

0

Массовое присвоение является имя Rails предоставляет акт создавая ваш объект с помощью хэша параметров. Это «массовое присвоение» тем, что вы назначаете несколько значений атрибутам с помощью одного оператора присваивания.

Следующие фрагменты выполняют массовое присвоение имени и теме атрибут модели сообщения:

Post.new(:name => "John", :topic => "Something") 
Post.create(:name => "John", :topic => "Something") 
Post.update_attributes(:name => "John", :topic => "Something") 

Для того, чтобы это работало, ваша модель должна позволить массовые задания для каждого атрибута в хэш вы находитесь переходящая в

Там две ситуации, в которых это утратит:.

у вас есть attr_accessible декларацию, которая не включает в себя: Имя

У вас есть attr_protected, который включает в себя: имя

В последнее время стало по умолчанию атрибутами, которые должны были быть указаны вручную с помощью attr_accessable, чтобы добиться успешного назначения массового задания. До этого значение по умолчанию предназначалось для назначения атрибутов, если они явно не были отмечены черным атрибутом attr_protected, или любой другой атрибут был белым в списке с attr_acessible.

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