Rails - 简化WHERE条件IS NOT NULL

时间:2013-06-19 23:42:26

标签: sql ruby-on-rails activerecord

在网页上工作我使用了下一行:

Model.select(:column).where("column IS NOT NULL")

我想知道是否有更多的Rails-ish方法来做这件事,例如使用哈希

Model.select(:column).where(column: !nil)

3 个答案:

答案 0 :(得分:3)

Squeel gem允许你使用!= nil类型语法,但本机rails不会。

示例:Model.where{column != nil}

答案 1 :(得分:1)

我更愿意使用范围,因为它更易读,以及以后更容易管理(比如与其他范围合并)

class Model < ActiveRecord::Base
  scope :not_null, lambda { |column|
   {:select => column,
    :conditions => "#{column} NOT NULL"
    }
  }
end

然后使用

Model.not_null("column_name")

答案 2 :(得分:0)

在Rails 4中你可以这样做:

Model.select(:column).where.not(column: nil)