白名单参数不在模型属性中

时间:2015-10-05 14:40:24

标签: ruby-on-rails activerecord whitelist

我正在尝试传递一些不属于模型属性的额外属性。

 def fulfillment_params
    params.require(:fulfillment).permit(
      :id, :ids, :batch_edit_fulfillment_ids, 
        :remarks,
    )
  end

我该如何正确地做到这一点? batch_edit_fulfillment_ids是我在其中一个表单中使用的字段,但是当我尝试执行update(fulfillment_params)操作时,rails假定这是我模型中的某个字段并抛出错误模型中没有这样的字段

3 个答案:

答案 0 :(得分:1)

如果batch_edit_fulfillment_ids不是表格中的字段,那么您肯定不会更新它。它没有任何意义。因此,您无需在whitelist中添加它,因为您只将那些可由用户更新的attributes列入白名单。

有关详细信息,请参阅:https://cbabhusal.wordpress.com/2015/10/02/rails-strong-params-whilisting-params-implementation-details/

在您的情况下,您可以参考Alex的答案,或者如果您想访问模型中的值,那么您可以设置它

class Fulfillment < ActiveRecord::Base
 attr_accessor :batch_edit_fulfillment_ids
end
# in controller you can set
@fulfillment.batch_edit_fulfillment_ids = params[:fulfillment][:batch_edit_fulfillment_ids]

答案 1 :(得分:1)

尝试这种方式:

global $product;
echo get_the_term_list( $product->id, 'product_cat', __( 'Categories: ', 'text-domain' ), ', ' );

答案 2 :(得分:0)

尽量不要将其传递给fulfillment_params 仅使用params[:fulfillment][:batch_edit_fulfillment_ids]