0

モデルが と 1 対 1 の関係を作成する Spree 拡張機能を作成していSpree::Variantます。次のデコレータを作成しました。

# app/models/spree/variant_decorator.rb
Spree::Variant.class_eval do
  has_one :persomodel, class_name: 'Extension::Persomodel'
end

を実行すると、このデコレータが評価されないことがわかりましたconsole。(バージョン 2.0.3)のVariantモデルを見ると、 file がなく、 file だけであることがわかりました。これが私のデコレータが評価されない理由だと思います。spree_coreapp/model/variant.rbapp/model/variant/scope.rb

探している関係をどのように実装できますか?

4

1 に答える 1

4

あなたの結論が正しいかどうかはわかりません。

Spree アプリでは、通常、application.rb に次のようなセクションが含まれます。

config.to_prepare do
  ['../app/**/*_decorator*.rb'].each do |glob|
    Dir.glob(File.join(File.dirname(__FILE__), glob)) do |c|
      Rails.configuration.cache_classes ? require(c) : load(c)
    end
  end
end

これは、アプリ ディレクトリ内の *_decorator*.rb 形式のすべてのファイルを反復処理し、必要に応じてそれらを要求/ロードします。

Rails エンジンとして拡張機能を構築している場合は、同様のブロックを配置します。

 Dir.glob(File.join(File.dirname(__FILE__), "../../app/**/*_decorator*.rb")) do |c|
   Rails.configuration.cache_classes ? require(c) : load(c)
 end

engine.rb の config.to_prepare ブロックで

プロジェクトに適した config.to_prepare ブロックに適切なコードがありますか? 存在する場合は、コードを評価する必要があります。

于 2013-10-31T23:01:20.173 に答える