Rails:使用空白?在where子句中

时间:2013-01-11 04:24:40

标签: ruby-on-rails rails-activerecord

我有一个具有开始和结束日期的模型。如果停止日期为空或为零,则模型处于活动状态。

我正在尝试为所有活动实例添加范围。

我可以使用空白吗?以某种方式在where子句?我唯一的方法是在where子句中检查两者吗?还有另一种方法吗?

这就是我现在所拥有的:

scope :active, where( 'stop_date is ? or stop_date is ""', nil )

我希望有更清洁的方法来做到这一点。

1 个答案:

答案 0 :(得分:1)

请注意,在rails 3.1.0 scope is deprecated之后,我会考虑使用类方法。如果该列实际上可以NULL并且空白也计为NULL,那么您必须检查这两个实例:

def self.active
  where("stop_date IS NULL OR stop_date <> ''")
end

IMO是否更好,但如果您不需要检查NULL状态(例如在null => false的情况下)。然后就是:

def self.active
  where("stop_date <> ''")
end

会奏效。