2015-11-17 9 views
7

私はSpree::Shipmentに追加した独自の属性を持ち、チェックアウト処理中に入力を追加した拡張機能拡張を行っています。問題は自分の属性が許可された属性に追加する方法は明確ではありません。私はSpree 3.0が内線の許可属性に追加する

Spree::PermittedAttributes.shipment_attributes << :my_custom_attribute 

を使用するように言うthis pull req上の会話はしかし、それは私がこれを置けばいい不明であるました!

これは助けにはならない "ああ、spree.rbに入れて"。 I

lib/spree.rb 
lib/spree/permitted_attributes.rb 
lib/spree_decorator.rb 
lib/spree/permitted_attributes_decorator.rb 

as suggested here)にこのコードを入れて試してみましたが、これらの結果のすべてについてshipment_attributesを訴えてエラーが定義されていないのいずれかで(PermittedAttributesを定義するメインファイルが評価される前に、そのおそらくコードが実行される)、または単に何も起こりません。許可された属性のリストに自分の属性を追加するには、このコードをどこに置くべきですか?


編集:これは人には不明瞭なので、私が投稿したリンクに掲載されているすべてのものを試しました。私の中にあるものを試してみると、かなり怒っています。あんな事はしないで。

+0

"ApplicationControllerや他のファイルでアプリケーションを再読み込みする方が良いかもしれませんが、レールがアプリケーションコードをリロードしたり、属性がクラスアクセッサに表示されないことがあります。 githubスレッドから...あなたはApplicationControllerで試しましたか? – SsouLlesS

+0

投稿した記事のアップデートで示唆したように、イニシャライザに入れてみましたか? (http://www.rubycoloredglasses.com/2014/04/strong-parameters-with-spree-extensions/) – jphager2

+0

私もいくつかのカスタム属性を持っていて、 'Spree :: PermittedAttributes.shipment_attributes <<:my_custom_attribute'を追加しました。 config/initializers/spree.rb(最後)で、それは私のために働いた –

答えて

0

hereと記載されているとおり、ApplicationControllerに入れることができます。

それともあなたは持っているとして、あなたは、100%の仕事は、またはlibの下に例えば新しいファイルを(作成することによって、意志、最後end後まっすぐapplication_controller.rbにこのコードを置くことのいずれかによって(ホワイトリストにあなたを追加し、全体permitted_pa​​ramsをオーバーライドすることができます既に試してみました)):

module Spree 
    module PermittedAttributes 

    # bunch of code 

    @@checkout_attributes = %i(
     email 
     use_billing 
     shipping_method_id 
     coupon_code 
     my_custom_attribute 
    ) 

    # bunch of code 

    end 
end 
+0

私が投稿したリンクで物事を試してみることについて私の編集を参照してください。 – Shelvacu

+0

私はあなたを刺激したり扇動したりするつもりはありませんでした。私はapp_controllerを使った私のソリューションが状況に影響しないケースを想像していません。しかし、あなたが言うように –

2

"spree.rb"は実際にはconfig/initializers/spree.rbを意味します。これは、スプレー設定のための適切な場所です。私はあなたに気付きました/その記事は様々なファイルを言及しましたが、決してこのファイルはありません。いずれかのこのファイルに一度

Spree::PermittedAttributes.shipment_attributes << :my_custom_attribute 

あなたはそれが動作しない場合は、より詳細な情報を提供する必要があります言及または

Spree::PermittedAttributes.shipment_attributes.push :my_custom_attribute 

として。