我正在写一个范围应该说选择所有调用call_status = open并且unit_id不是nil。我对Ruby非常弱,也是Rails的新手,并且很难表达这一点。
我在这里:
scope :open_calls, where(:call_status => "open", :unit_id != nil).order("id ASC")
我应该使用不同的运算符来评估nil吗?
答案 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.