를 만들 수 없습니다를 통해 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)
을 실행하면
, 그것을 작동합니다.
나는 roles_users_attributes에 roles_user_attributes에게 & roles_attributes을 & role_attributes을 변경하려고하지만 문제가 해결되지 않았다.
나는이 주제에 대한 질문을 많이 읽을 수 있지만 해결책은 나를 위해 일하지 않는다. 이유를 모르시겠습니까? 그러나 나는 꽤 혼란 스럽다.미리 감사드립니다.
조인 테이블의 속성을 저장해야합니까? 예에서 언급 한 활성 속성과 같습니다. thx – adysson
활성 속성은 무엇을합니까? 만약 특별한 역할을하는 하나의 역할을 의미한다면, 나는 active_role_id에 대한 사용자 모델에 여분의 컬럼을 추가하고'사용자 belongs_to active_role'을 가질 것을 고려할 것이다. – RobHeaton
'active'는 놓아야 할 속성의 종류이다. attr_accessible'에 role_id' : role' 다음 당신이해야 당신이'attr_accessible을 변경하면이 경우에 - (하지 사용자 또는 역할 테이블) DB에 테이블을 조인, 제법 각 사용자 – adysson