2014-09-25 71 views
1

我有以下的方法,我想移动到一个名为范围重构类方法导轨4范围

def self.running_promotion 
    Supplier.all.select { |s| s.has_running_promotion? == true } 
end 

不知道如何使用lambda与轨道4范围或如果这是可能的。我试图

scope :on_sale, -> { where({ |s| s.has_running_promotion? == true }) } 

回答

1

如果has_running_promotion是在你的表中的字段,你可以写:

scope :on_sale, -> { where(has_running_promotion: true) } 
+0

是的,但事实并非如此。 'has_running_promotion?'是一种方法 – olimart 2014-09-25 17:31:27

+0

如果你没有'has_running_promtion'字段,添加你的'has_running_promtion?'与它无关,所以也许你应该添加你的'has_running_promotion?'方法来提问 – IS04 2014-09-25 17:37:26