Rails强参数 - 接受虚拟属性

时间:2016-07-26 06:27:32

标签: ruby-on-rails ruby ruby-on-rails-4 strong-parameters

我有持久名称属性和虚拟属性的ActiveRecord模型。

class MyModel < ActiveRecord::Base
 validates :name, length: { minimum: 1 }, presence: true

 def virtual_attr=(value)
  # set something
 end

 def virtual_attr
  # get something
 end
end

在我的控制器中,我指定了强大的参数:

  def my_model_params
    params.permit(:name, :virtual_attr)
  end

当我尝试创建/更新我的模型时,my_model_params只包含一个名称,而我知道params[:virtual_attr]具有我传递给控制器​​的值。好像它只是被过滤掉了。我做错了什么?

1 个答案:

答案 0 :(得分:4)

根据这些参数

{"name"=>"New", "virtual_attr"=>{"enable"=>"false", "start"=>"false"}, "controller"=>"my_model", "action"=>"create"}

您需要将强力参数更改为:

def my_model_params
  params.permit(:name, virtual_attr: [:enable, :start])
end