很抱歉,但我无法理解这一点:
class Customer < ActiveRecord::Base
def self.first_one
order(:created_at).first.id
end
end
如果数据库中有客户,则上述功能将返回第一个客户id
。
但是如果没有,那就会给我一个错误,因为id
无法在nil
上运行。
有人可以告诉我如何更改功能,即使数据库中没有任何客户,它也会返回nil
吗?
感谢您的帮助。
答案 0 :(得分:4)
在:try
nil
来避免错误
order(:created_at).first.try(:id)
这将返回nil
,即使order(:created_at).first
为零也不会引发任何错误
修改强>
根据@Ursus的建议如果您使用ruby &
及以上
2.3.0
链接该方法
# >= Ruby 2.3.0
order(:created_at).first&.id
答案 1 :(得分:2)
更明确的版本可能如下所示:
def self.first_one
first = order(:created_at).first
first && first.id
end