У меня есть эти модели:рельсов HAS_MANY через не может создать объект ассоциации
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)
.
Я попытался изменить role_user_attributes & role_attributes на role_users_attributes & role_attributes, но это не решило проблему.
Я прочитал много вопросов по этой теме, но никакое решение не работало для меня. Разве вы не знаете, почему? Но я совершенно смущен.
Заранее благодарен!
, даже если мне нужен атрибут в таблице соединений для сохранения? как активный атрибут, упомянутый в примере. thx – adysson
Что делает активный атрибут? Если он предназначен для обозначения отдельной роли, имеющей особый статус, я бы подумал о добавлении в дополнительный столбец в пользовательской модели для 'active_role_id' и имеет' user принадлежит_to active_role' – RobHeaton
'active' является своего рода атрибутом, который должен быть размещен В таблице объединений в БД (не в таблице пользователей или ролей) может быть много «активных» ролей для каждого пользователя. – adysson