활성 레코드 컬렉션을 사용하여 프로젝트를 업데이트함으로써 프로젝트에 대한 사용자 액세스를위한 역할 할당 (project_id, role_id)을 설정하고 있습니다.ActiveRecord Collection 또는 Array가 ActiveRecord :: RecordInvalid 오류를 일으키는 레일스 업데이트
하지만 때때로 우리는 오류가 발생한다는 것을 알게되었습니다. ActiveRecord :: RecordInvalid - 유효성 검사 실패 : 역할은 이미 수행되었습니다..
레일즈가 자동으로 할당을 삭제하고 생성하는 것을 이해하고 있습니다. 이 오류가 발생하여 잘못된 것이 있습니까?
Class Project
has_many :assigned_roles, source: :role, through: :assignments
....
def assign_users(user_ids = :all)
if user_ids == :all
roles = subscription.roles
else
roles = subscription.roles.where(user_id: user_ids)
end
update!(assigned_roles: roles)
end
프로젝트, 역할 또는 사용자 등급에 대해 더 많은 코드가 있습니까? 특히 'validates : some_property, ...'와 같은 유효성 검사 관련 코드 – AndrewSwerlick
클래스 할당에 "validates_uniqueness_of : role_id, scope : : project_id"가 있습니다. –
코드 스 니펫을 편집하여이를 포함시켜야합니다. 그건 분명히 당신의 오류와 관련이 있습니다. 또한 관련성이있을 수있는 "구독"을 정의하는 코드를 포함시켜야합니다. 자세한 내용은 답변을 통해 설명하겠습니다. – AndrewSwerlick