2013-10-10 55 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

我有完全相同的問題,我還沒有找到一個很好的解決方案,但我發現一個似乎略勝一籌。默認情況下軌將嘗試確定相關模型,並在你的情況

wrap_parameters Product 

,如果你想添加一個虛擬屬性,是完全一樣的

wrap_parameters Product, include: Product.attribute_names 

於是呼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