私のシステムにいるユーザは、固有の電子メールを持っている必要があります。既存の電子メールを使用してユーザーを作成しようとすると、コントローラーはエラーをスローし、変更をロールバックします。検証の失敗後にモデルを更新してください
詐欺メールを送信しようとすると、モデルレコードを更新したいと考えています。しかし、ロールバックは、別のレコードにあっても変更が発生することを防止しています。私はupdate_attribute
、update_column
、save(validate: false)
を試しましたが、どれもうまくいきません。
ロールバックをバイパスして(別の)モデルを編集するにはどうすればよいですか?
いつ更新したいですか?電子メールが必要/固有であるが、一意性に欠ける場合は、実際に新しいレコードを作成する方法をイメージすることはできません。しかし、私は、既存のレコードを更新するための方法について考えることができます。モデルのエラーオブジェクトを使用して電子メールの検証が失敗したかどうかを確認し、別の要求でモデルを更新することができます。 たとえば、person.errors [:email] 'を使用して、personのemail属性のエラーをチェックし、その人のemail_error属性などが更新されているかどうかを調べることができます。 –
保存(検証:偽)を試しましたか?保存しません(検証:false)。 – YTorii
理想的には、同じ要求で発生します。私は既存のレコードを編集して、新しいレコードを作成しません。ロールバックはリクエスト中に加えられた変更をロールバックするようです。しかし、私はこの時点でどんな解決策にも解決します。 – Dty