Rails范围不相等

时间:2012-07-04 00:22:39

标签: ruby-on-rails-3 activerecord

我正在写一个范围应该说选择所有调用call_status = open并且unit_id不是nil。我对Ruby非常弱,也是Rails的新手,并且很难表达这一点。

我在这里:

scope :open_calls, where(:call_status => "open", :unit_id != nil).order("id ASC")

我应该使用不同的运算符来评估nil吗?

2 个答案:

答案 0 :(得分:8)

据我所知,无法告诉ActiveRecord使用哈希构建NULL子句。但是您可以将字符串样式和哈希样式链接到where子句:

scope :open_calls, where(:call_status => "open").where("unit_id IS NOT NULL").order("id ASC")

答案 1 :(得分:0)

你可以这样做:

scope :open_calls, where("call_status IS ? AND unit_id IS NOT ?", "open", nil).order("id ASC")

请注意,值"open"nil放在数组中,我们使用?插入它们。这有助于防止由于引用/转义等引起的SQL注入错误,强烈建议使用。 See here for more.