2013-03-29 58 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 
相关问题