我有一个名为:Invitation with cols: name, email
用户表有 2 列:电子邮件、辅助电子邮件
用户 A 想邀请用户 B 成为好友。 如果 A 已经通过电子邮件邀请了 B,那么如果 A 再次通过 secondary_email 邀请 B,则会抛出错误:已通过另一封电子邮件邀请。 编写验证并正常工作。
问题是:如果我更新 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
如果电子邮件发生更改,如何使模型在更新时验证。
谢谢
最佳答案
validate :is_already_invited?, on: :update
def is_already_invited?
if email_changed?
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
end
关于ruby-on-rails - 如果 Rails 中的属性发生更改,则验证更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39913455/