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