0

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

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

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

这是我现在拥有的:

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

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

4

1 回答 1

1

请注意,在scope 不推荐使用rails 3.1.0 之后,因此我会考虑仅使用类方法。如果在您的情况下该列实际上也可以是NULL空计数,NULL那么您将必须检查这两个实例:

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

IMO 更好一点,但是如果您不需要检查NULL状态(例如在 where 的实例中null => false)。然后只是:

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

将工作。

于 2013-01-11T05:05:45.727 回答