2013-01-11 91 views
0

我有一個有開始和結束日期的模型。如果停止日期爲空或無,則模型處於活動狀態。Rails:使用空白?在哪裏條款

我想爲所有活動實例添加一個作用域。

我可以使用空白嗎?以某種方式在where子句中?我的唯一方法是在where子句中檢查兩者嗎?有沒有另一種方法來做到這一點?

這是我現在有:

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

我希望有一個更清潔的方式來做到這一點。

回答

1

請注意,導軌後3.1.0 scopeis deprecated所以我會考慮只使用類方法。如果列其實是可以NULL和空算作NULL以及在您的情況,那麼你將要檢查的兩個實例爲這樣:

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

是更好一點海事組織,但如果你不需要檢查爲NULL狀態(如在null => false的情況下)。然後只是:

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

將工作。