我有一个具有开始和结束日期的模型。如果停止日期为空或为零,则模型处于活动状态。
我正在尝试为所有活动实例添加范围。
我可以使用空白吗?以某种方式在where子句?我唯一的方法是在where子句中检查两者吗?还有另一种方法吗?
这就是我现在所拥有的:
scope :active, where( 'stop_date is ? or stop_date is ""', nil )
我希望有更清洁的方法来做到这一点。
答案 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
会奏效。