【问题标题】:Overriding Gem Parameter覆盖 Gem 参数
【发布时间】:2016-03-04 19:19:42
【问题描述】:

我正在将 Spree Commerce 3-0-stable 用于电子商务应用程序,并且我正在尝试覆盖默认的 Order 前缀,但似乎找不到合适的方法来执行此操作。 gem 像这样设置前缀

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

更改此前缀的最佳方法是什么?考虑到初始化是直接在包含上完成的,我有点迷失了。

提前致谢。

【问题讨论】:

    标签: ruby-on-rails-4 spree


    【解决方案1】:

    从我的角度来看,应该为那个代码打大礼包的人......

    无论如何,我认为您可以轻松更改它。我试图为您创建一个最小的有用示例

    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
    

    【讨论】:

      【解决方案2】:

      在你的 spree.rb 中添加,

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

      【讨论】:

        猜你喜欢
        • 2020-03-18
        • 1970-01-01
        • 2013-02-19
        • 2015-06-05
        • 2016-01-03
        • 2020-11-03
        • 2012-05-20
        • 2023-03-26
        • 1970-01-01
        相关资源
        最近更新 更多