2014-09-25 70 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