Ruby on rails Rails强参数-接受虚拟属性

Ruby on rails Rails强参数-接受虚拟属性,ruby-on-rails,ruby,ruby-on-rails-4,strong-parameters,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 当我尝试创建/更新我的模型时,我的_model _

我有一个带有持久名称属性和虚拟属性的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

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

根据这些参数

{"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

根据这些参数

{"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

你能在控制台上发布你得到的参数吗hash@Deepak这里是参数散列:{name=>New,virtual_attr=>{enable=>false,start=>false},controller=>my_model,action=>create}。就这些了,你可以在控制台上发布你得到的参数吗hash@Deepak这里是参数散列:{name=>New,virtual_attr=>{enable=>false,start=>false},controller=>my_model,action=>create}。都在那儿