Rails ActiveRecord,检查nil

时间:2012-11-20 23:52:02

标签: ruby-on-rails-3 activerecord

c成为任何东西,(或零)是:

if !c.nil?
  true
else
  false
end

相同
if c
  true
else
  false
end

另外,是:

Model.where(:name => params[:foo])

与:

相同
Model.where('name = ?', params[:foo])

来自Java背景,传递给#where()的哈希方法是否提供了转义?使用其中一个是否有优势?

1 个答案:

答案 0 :(得分:1)

在这两种情况下,是的,这些是相同的。此外,是的,散列格式确实提供了转义。它实际上会做更多的事情,具体取决于params[:foo]是否是一个列表,它会在=in之间发生变化(可能还有更多的事情)。

将来,您可以使用to_sql方法轻松查看AREL语句生成的SQL。

Model.where(:name => params[:foo]).to_sql

通常,惯例是在足够的时候使用哈希语法。它通常更容易阅读,尤其是当您有涉及多个模型的查询时。例如:

Model.joins(:other_model).where(:name => params[:foo], :other_model => {:attr => params[:bar]})