【问题标题】:Active Records in Ruby on RailsRuby on Rails 中的活动记录
【发布时间】:2019-05-19 22:22:35
【问题描述】:

我刚刚开始在 Rails 上学习 ruby​​,并且我有与问题相关的活动记录。如果你想以不破坏应用程序的方式找到记录,哪个更好:

users = User.where(email: abc@def.com)
if users.any?
    user = users.first
else
    user = nil
end

begin
     user = User.where(email: abc@def.com).first
rescue
     user = nil
end

您能否指导我并告诉我在性能方面哪个更好以及这样做的正确“rails-way”?

【问题讨论】:

    标签: ruby-on-rails activerecord rails-activerecord


    【解决方案1】:

    即使 where 语句没有返回结果,您也应该能够调用 'first' 方法。在没有结果的情况下,第一种方法会返回nil。

    我们可以简化您的第一个建议:

    user = User.where(email: 'abc@def.com').first
    

    【讨论】:

    • 甚至user = User.find_by(email: 'abc@def.com')
    猜你喜欢
    • 1970-01-01
    • 2013-01-04
    • 1970-01-01
    • 1970-01-01
    • 2013-03-26
    • 1970-01-01
    • 1970-01-01
    • 2016-05-24
    • 1970-01-01
    相关资源
    最近更新 更多