我有持久名称属性和虚拟属性的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]
具有我传递给控制器的值。好像它只是被过滤掉了。我做错了什么?
答案 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