这是我在名单上的第一篇文章,但在我寻求帮助之前,我要感谢大家创建的精彩平台。
在我正在进行的项目中,需要捐赠/捐赠功能。我已按照自定义指南(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
的交叉发布答案 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 ...