内の属性の変更は、私はと呼ばれるテーブルを持っている場合:colsので招待:名前、電子メール検証Railsの
Userテーブル2つのcolsの持っている:電子メールを、
ユーザーSECONDARY_EMAILたいが、友人になるユーザーBを招待。 AがすでにBをEメールで招待している場合、AがBをsecondary_email経由で再度招待すると、別のEメールですでに招待されています。 検証を書いて正常に動作します。
問題は次のとおりです。Bのsecondary_emailですでにいくつかの招待状が更新されていても、それはエラーをスローしません。
validate :is_already_invited?,
on: :update,
if: :email_changed?
validate :is_already_invited?,
on: :create
def is_already_invited?
user = User.where(secondary_email: self.email).first
if user
self.inviter.friendships.each do |friendship|
friendship.errors[:email] = "is already invited under different email address." if (friendship.email = user.email)
end
end
end
電子メールが変更された場合にモデルを更新時に検証する方法。 email_changed
TKS
?条件は、電子メールが変更された場合にのみチェックされます。 secondary_emailが変更されていないか、正しくありません。 – Jayaprakash
@Jayaprakashええと、フォームの変更による電子メールの入力を確認します。私はちょうど電子メールが変更されたときにのみ検証する必要があるため、毎回の保存や更新の記録ではない –