Spree插件添加一個作用域。假設:你如何別名或以其他方式覆蓋範圍並調用原始範圍?
class Product
scope :in_sale, -> { where(in_sale: true) }
end
請注意,actual scope稍微複雜一些。
現在,我要重寫,在我的裝飾:
Spree::Product.class_eval do
scope :in_sale, -> { on_hand.where(in_sale: true) }
end
相反的複製原執行.where(in_sale: true)
,我更願意稱之爲原。
如何重新使用原始範圍,有點類似於您通常爲例程方法調用alias_method_chain :foo, :feature
?
嗯,這不是簡單的別名做的工作嗎? –
@SergioTulentsev,是的。這只是稍微複雜一些,然後在實例方法上定義一個別名,因爲class-eval的事情。也許你可以用一些代碼來回答這個問題,這樣我們就可以解決這個問題了? – berkes