我正在编写一个范围,应该说选择 call_status = open 并且 unit_id 不为零的所有调用。我在 Ruby 上真的很弱,而且对 Rails 也很陌生,并且很难表达这种权利。
这是我所拥有的:
scope :open_calls, where(:call_status => "open", :unit_id != nil).order("id ASC")
我应该使用不同的运算符来评估 nil 吗?
我正在编写一个范围,应该说选择 call_status = open 并且 unit_id 不为零的所有调用。我在 Ruby 上真的很弱,而且对 Rails 也很陌生,并且很难表达这种权利。
这是我所拥有的:
scope :open_calls, where(:call_status => "open", :unit_id != nil).order("id ASC")
我应该使用不同的运算符来评估 nil 吗?
据我所知,没有办法告诉 ActiveRecord 用哈希构建一个 NULL 子句。但是您可以链接字符串样式和哈希样式的 where 子句:
scope :open_calls, where(:call_status => "open").where("unit_id IS NOT NULL").order("id ASC")
你可以这样做:
scope :open_calls, where("call_status IS ? AND unit_id IS NOT ?", "open", nil).order("id ASC")
请注意,值"open"
和nil
被放置在一个数组中,我们?
用来插入它们。这有助于防止由于引用/转义等导致的 SQL 注入错误,强烈推荐。请参阅此处了解更多信息。