【发布时间】:2016-05-01 21:13:56
【问题描述】:
我正在尝试按姓氏和娘家姓搜索姓名数据库。但是,如果娘家姓为 nil,则搜索会崩溃。我使用 if/then 语句创建了一个解决方法,但想学习在 ruby 中执行此操作的正确(更清洁)方法。
if user.maiden_name.nil?
x = Alumni.where(firstname: user.first_name, lastname: user.last_name)
else
x = Alumni.where(firstname: user.first_name, lastname: [user.last_name, user.maiden_name])
end
谢谢!
【问题讨论】:
-
搜索崩溃时收到什么错误?
-
Neven 说的,因为 nil maiden_name 应该没问题。
-
你是对的,错误实际上是在 .upcase 上,当有一个 nil maiden name 时它会崩溃。有没有办法在 sql 语句中为非空名称添加大写?
-
using: user.maiden_name.try(:upcase) 似乎有效。这是最好的方法吗?
-
如果您使用的是 ruby 2.3.0,则可以使用安全导航运算符,这与 try 方法非常相似。发行说明中有更多信息:ruby-lang.org/en/news/2015/12/25/ruby-2-3-0-released
标签: ruby-on-rails where