2016-03-04 132 views
1

我使用的是Spree Commerce 3-0-stable的電子商務應用程序,我試圖覆蓋默認Order前綴,但似乎無法找到合適的方法來執行此操作。寶石設置這樣覆蓋寶石參數

include Spree::Core::NumberGenerator.new(prefix: 'R')

前綴這裏的整個文件https://github.com/spree/spree/blob/master/core/app/models/spree/order.rb#L16

而且NumberGenerator幫手是在這裏: https://github.com/spree/spree/blob/master/core/lib/spree/core/number_generator.rb

什麼會改變這個前綴的最佳方式是什麼?由於初始化直接在include上完成,所以我有點迷茫。

在此先感謝。

回答

0

從我在狂歡點看法的人應該在臉上的代碼被掌摑......

從來沒有少,我認爲你可以很容易地改變它。我試圖創建一個最小的有用的例子,你

class NumberGenerator < Module 
    attr_accessor :prefix 

    def initialize(options) 
    @prefix = options.fetch(:prefix) 
    end 

    def included(klazz) 
    number_generator = self 
    klazz.class_eval do 
     define_singleton_method(:number_generator) { number_generator } 
    end 
    end 
end 

class Order 
    include NumberGenerator.new(prefix: 'R') 
end 

puts Order.number_generator.prefix # => R 
Order.number_generator.prefix = 'Q' 
puts Order.number_generator.prefix # => Q 
0

在你spree.rb只需添加,

Spree::Order.number_generator.prefix = 'Q'