gpt4 book ai didi

ruby-on-rails - 如果 Rails 中的属性发生更改,则验证更新

转载 作者:行者123 更新时间:2023-12-03 09:13:11 25 4
gpt4 key购买 nike

我有一个名为: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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com