【发布时间】:2016-08-27 23:15:29
【问题描述】:
我想将变量设置为给定值,但前提是该值有效。
现在这是我的代码:
if Something.find(params[:id].comments.first.exists?
@comment = Something.find(params[:id]).comments.first
else
@comment = nil
end
但这效率低下,因为它必须加载两次记录。
我尝试使用 ruby 方法try 来确保变量只有在值有效时才会被设置:
@comment = Something.try.find(params[:id]).comments.first
但无论我把它放在哪里,我都会返回“nil 不是符号”错误。似乎try 仅用于打印变量。
任何人都知道我还能如何仅通过一个查询来完成此操作?
【问题讨论】:
-
如果您的查询失败,默认情况下您会得到一个
nil。事后运行您的单个查询并测试nil。 -
@MarsAtomic 如果查询失败,我会收到整个页面的“找不到记录”错误。
-
rv = Something.find(params[:id]).comments.first; @comment = rv.exists? : rv : nil。您在第一行代码中缺少正确的括号。
标签: ruby-on-rails ruby