0

这是我在列表中的第一篇文章,但在我寻求帮助之前,我要感谢大家为您创建的精彩平台。

在我正在从事的项目中,需要捐赠/捐赠功能。我已经按照定制指南 (http://spreecommerce.com/documentation/customization.html) 为 Order 模型添加了新逻辑。

我在“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

4

2 回答 2

1

感谢 Brian ( https://groups.google.com/forum/#!topic/spree-user/mGcj4EpGuYo/discussion ) 的修复。在狂欢中,添加所有以'_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
于 2011-09-16T09:11:34.147 回答
0

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

于 2011-09-16T03:00:05.537 回答