アクティブレコードのロールを使用してプロジェクトを更新することにより、プロジェクトへのユーザーアクセスのロール割り当て(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