gpt4 book ai didi

ruby-on-rails - Rails 5 ActiveRecord - 在使用方法之前检查是否有任何结果

转载 作者:行者123 更新时间:2023-11-29 14:37:50 25 4
gpt4 key购买 nike

在我的 Rails 5 + Postgres 应用程序中,我进行如下查询:

user = User.where("name = ?", name).first.email

所以这给了我第一个有名字的用户的电子邮件。

但是如果不存在具有此名称的用户,我会得到一个错误:

NoMethodError (undefined method `email' for nil:NilClass)

如何在使用该方法之前检查我是否有任何结果?

我可以考虑是否有多种方法可以使用 if 子句来做到这一点:

user = User.where("name = ?", name).first

if user
user_email = user.email
end

但这似乎不是最优雅的方式,我相信 Rails 有更好的方式。

最佳答案

您可以使用 find_by , 返回对象或 nil 如果没有找到。

user = User.find_by(name: name)
if user
...
end

话虽如此,如果您期望有多个元素,您仍然可以使用 where 子句。

users = User.where(name: name)
if users.any?
user = users.first
...
end

还有另一种方式 Ruby 2.3你可以做什么

User.where(name: name).first&.name

如果您不确定对象是否为nil,则可以使用&,在这种情况下,整个语句将返回nil 如果没有找到用户。

关于ruby-on-rails - Rails 5 ActiveRecord - 在使用方法之前检查是否有任何结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41643810/

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