2013-03-29 90 views
0

我想知道什麼是使用實例方法過濾記錄的範圍的最佳方法。這是我的模型:使用實例方法創建示波器的最佳方式

class Promotion < ActiveRecord::Base 

    scope :availables, lambda{ all.select{ |obj| obj.is_available? } } 

    def is_available? 
    Date.today <= Date.strptime(valid_thru, '%m/%d/%Y') 
    ...more validations here 
    end 
end 

這裏的問題是這樣的範圍返回一個數組,而不是一個ActiveRecord ::關係,我無法鏈中的其他領域。

任何建議傢伙?

+0

Gals無法回答嗎? – vonbrand

回答

0

有沒有辦法完成你想要的。如果你想在ruby對象上應用邏輯,你不能再返回一個ActiveRecord :: Relation。

實現像這樣的唯一方法是在數據庫級別的邏輯。在這種情況下,您可以使用類方法來實現您想要的效果:

def availables 
    where('valid_thru => ?', Date.today) 
end 
相關問題