修改订单模型的问题:未初始化的常量Order(NameError) - Spree 0.60.1

时间:2011-09-15 20:47:59

标签: ruby-on-rails ruby e-commerce spree

这是我在名单上的第一篇文章,但在我寻求帮助之前,我要感谢大家创建的精彩平台。

在我正在进行的项目中,需要捐赠/捐赠功能。我已按照自定义指南(http://spreecommerce.com/documentation/customization.html)向订单模型添加新逻辑。

我在'app / models'中添加了一个名为'order_decorator.rb'的新文件,并添加了:

Order.class_eval do
  def my_method
    # custom code
  end
end

我收到以下错误:

order_decorator.rb:1:in `<top (required)>': uninitialized constant Order (NameError)

任何人都可以为我的问题添加一些亮点吗?

这是Spree邮件列表https://groups.google.com/d/topic/spree-user/mGcj4EpGuYo/discussion

的交叉发布

2 个答案:

答案 0 :(得分:1)

感谢Brian(https://groups.google.com/forum/#!topic/spree-user/mGcj4EpGuYo/discussion)的修复。在spree中,需要添加以'_decorator'结尾的所有文件的require语句需要进入'self.activate'块:

module SpreeSite
  class Engine < Rails::Engine
    def self.activate
      # Add your custom site logic here
      Dir.glob(File.join(File.dirname(__FILE__), "../app/**/*_decorator*.rb")) do |c|
        Rails.configuration.cache_classes ? require(c) : load(c)
      end
      AppConfiguration.class_eval do
       #
      end
    end

    def load_tasks
    end

    config.to_prepare &method(:activate).to_proc
  end
end

答案 1 :(得分:0)

这打破了Rails命名方案。将文件名更改为order.rb或将代码更改为OrderDecorator.class_eval ...