gpt4 book ai didi

ruby-on-rails - 当 find 涉及单个属性但 create 涉及多个属性时实现 find_or_create_by

转载 作者:行者123 更新时间:2023-12-05 04:09:17 26 4
gpt4 key购买 nike

在我的 Rails 应用程序中,我想通过他们的电子邮件查找用户,或者如果用户不存在,则使用该电子邮件以及一些其他属性创建一个。是否有比下面的代码更简单的方法来执行此操作,也许使用 find_or_create_by

def set_user
if self.user = User.find_by(email: recipient)
else
self.user = User.create(email: recipient,
password: Devise.friendly_token.first(6),
confirmed_at: DateTime.now)
end
end

最佳答案

find_or_create_by获取一个仅在创建时应用的 block 。它将根据您提供的属性查找记录,如果没有找到,将创建一个具有您指定的 block 属性的记录。

在你的情况下,这看起来像:

user = User.find_or_create_by(email: recipient) do |user|
user.password: Devise.friendly_token.first(6),
user.confirmed_at: DateTime.now
end

关于ruby-on-rails - 当 find 涉及单个属性但 create 涉及多个属性时实现 find_or_create_by,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46250587/

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