2013-10-10 9 views
7

仮想属性を持つモデルがあり、フォームに含まれてコントローラに送信されますが、モデルハッシュ内をラップする仮想属性(SKU)を取得できません。wrap_parametersに余分な仮想属性を追加する方法

{"name"=>"Productname", "description"=>"Description", "sku"=>"ak0001", "product"=>{"name"=>"Productname", "description"=>"Description"}} 

私はそれを上書きするwrap_parametersを使用することができますが、私は配列にすべての属性(仮想および非仮想属性)を追加する必要があります、私は既存のラップパラメータに仮想属性を追加することはできません?

wrap_parameters Product, :include => [:sku, :name, ..etc...] 
+1

私はこの正確な疑問を持っている...恥を行うことができます – Kirk

答えて

4

を上書きしています、私は正確に同じ問題を抱えていた、私は偉大な解決策を見つけていないが、私は少し良いようだ1を発見しました。デフォルトでは、レールは、関連するモデルを決定し、仮想属性を追加したい場合は、正確にそう

wrap_parameters Product, include: Product.attribute_names 

と同じであるあなたのケース

wrap_parameters Product 

にして、そのモデルとwrap_parametersを呼び出すようにしようとしますあなただけの何の答え:( 幸運はありません

wrap_parameters Product, include: Product.attribute_names + [:sku] 
1

まだ解決策はありません。今の代わりwrap_parametersを使用するために、私はpermitted_pa​​ramsに

def permitted_params 
     { 
     :product => params.require(:product).merge(
     { 
      sku: params[:sku], 
     } 
     ).permit(*permitted_product_attributes) 
     } 
    end 
関連する問題