2011-09-15 4 views
0

これは私の最初の投稿ですが、私が助けを求める前に、あなたが作成したすばらしいプラットフォームのすべてに感謝します。注文モデルを変更する問題:初期化されていない定数Order(NameError) - Spree 0.60.1

私が進めているプロジェクトでは、寄付/寄付の機能が必要です。私はカスタマイズ・ガイド(http://spreecommerce.com/documentation/customization.html)に従って新しいロジックをOrderモデルに追加しました。

私は「アプリ/モデルの内部の '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) 

誰でも私の問題にいくつかの光を加えることができますか?

これはクロス命名方式のRailsを壊しているシュプレーメーリングリストhttps://groups.google.com/d/topic/spree-user/mGcj4EpGuYo/discussion

+0

私はこれは道の懸案である知っている:P しかし、あなたは '順にアクセスしていますそれは酒宴には存在しない。 'Spree :: Order.class_eval'を試してみてください。注文クラスは、 'Spree'名前空間の下でモジュール化されています。これは誰もがこのような何かをしようとするのを助けることを望みます – JensDebergh

答えて

1

ありがとうBrian(https://groups.google.com/forum/#!topic/spree-user/mGcj4EpGuYo/discussion)まくるでインクルードは「self.activate」ブロック内で移動する必要があります「_decorator」で終わるすべてのファイルを追加するために必要なステートメントを必要とします。

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

を掲載しました。ファイル名をorder.rbに変更するか、OrderDecorator.class_evalへのコードを変更してください。

+0

[このガイド](http://spreecommerce.com/documentation/customization.html)に基づいてカスタム機能を追加するには、元の名前と「デコレータ」が付加されたファイルを追加する必要があります。 order.rbにロードされません。 – filipeamoreira

関連する問題