Проблема изменения модели заказа: неинициализированная константа Order (NameError) - Spree 0.60.1 - PullRequest
0 голосов
/ 16 сентября 2011

Это мой первый пост в списке, но прежде чем я попрошу о помощи, хочу поблагодарить вас всех за прекрасную платформу, которую вы создали.

В проекте, над которым я работаю, есть потребность в функции пожертвования / пожертвования.Я следовал руководству по настройке (http://spreecommerce.com/documentation/customization.html), чтобы добавить новую логику в модель заказа.

Я добавил новый файл с именем 'order_decorator.rb' внутри 'app / models' и добавил:

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 ]

1 голос
/ 16 сентября 2011

Спасибо Брайану (https://groups.google.com/forum/#!topic/spree-user/mGcj4EpGuYo/discussion) за исправление). В spree инструкция require, необходимая для добавления всех файлов, заканчивающихся на '_decorator', должна идти внутри блока '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
0 голосов
/ 16 сентября 2011

Это нарушает схему именования Rails.Измените имя файла на order.rb или код на OrderDecorator.class_eval do ...

...