我有这些模特:
class User < ActiveRecord::Base
attr_accessible :email, :name, :roles_user_attributes
has_many :roles_users
has_many :roles, through: :roles_users
accepts_nested_attributes_for :roles_users, reject_if: :all_blank, allow_destroy: true
accepts_nested_attributes_for :roles
end
class Role < ActiveRecord::Base
attr_accessible :name, :user_id
has_many :roles_users
has_many :users, through: :roles_users
end
class RolesUser < ActiveRecord::Base
attr_accessible :active, :role_id, :user_id, :role_attributes
belongs_to :user
belongs_to :role
accepts_nested_attributes_for :role, reject_if: :all_blank
end
当我跑步时:
my_role = Role.find(1)
user = User.find(1)
user.roles_users.create(active: 1, role: my_role)
我收到错误Can't mass-assign protected attributes: role
。
当我运行user.roles_users.create(active: 1, role_id: 1)
时,它会起作用。
我尝试更改roles_user_attributes&amp; role_attributes到roles_users_attributes&amp; roles_attributes,但它没有解决问题。
我读了很多关于这个主题的问题,但没有解决方案适合我。 你不知道为什么吗?但我很困惑。
提前致谢!
答案 0 :(得分:0)
你在这里所做的并不是accepts_nested_attributes_for
的工作 - 搜索“嵌套表格”用于它所用的各种事物。你应该能够user.roles << my_role
而不用担心这些事情。
编辑:如果这不是一个选项,那么只需添加attr_accessible :role
即可。