Ruby on rails 当find涉及单个属性但create涉及多个属性时,实现find\u或create\u by
在我的Rails应用程序中,我希望通过他们的电子邮件找到一个用户,或者如果该用户不存在,则使用该电子邮件以及其他一些属性创建一个用户。有没有比下面的代码更简单的方法来实现这一点,比如使用Ruby on rails 当find涉及单个属性但create涉及多个属性时,实现find\u或create\u by,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,在我的Rails应用程序中,我希望通过他们的电子邮件找到一个用户,或者如果该用户不存在,则使用该电子邮件以及其他一些属性创建一个用户。有没有比下面的代码更简单的方法来实现这一点,比如使用find\u或\u create\u by def set_user if self.user = User.find_by(email: recipient) else self.user = User.create(email: recipient,
find\u或\u create\u 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方法是否返回nil,如果返回nil,则创建一个用户
def set_user
user = User.find_by(email: recipient)
unless user
user = User.create(email: recipient,
password: Devise.friendly_token.first(6),
confirmed_at: DateTime.now)
end
获取仅在创建时应用的块。它将根据您提供的属性查找记录,如果未找到记录,将使用您指定的块属性创建一条记录
在您的情况下,这看起来像:
user = User.find_or_create_by(email: recipient) do |user|
user.password: Devise.friendly_token.first(6),
user.confirmed_at: DateTime.now
end
user = User.find_or_create_by(email: recipient) do |user|
user.password: Devise.friendly_token.first(6),
user.confirmed_at: DateTime.now
end