我有一个使用PG hstore的Rails4应用程序。
这是来自控制台:
这是车辆控制器:
def vehicle_params
params.require(:vehicle).permit(:description, :stufftype_id, :name, :tenant_id, :count, :manufacturer, :man_date, :purchase_date, :purchase_price, :current_price, :warranty_date, :model, :notes, :site_id, :sell, :loaned, :borrowed, :sell_to, :borrowed_from, :sale_id, :sale_price, :sold_amount, :sold, :archive, :vendor_id, :loaned_to, :data)
end
它包含:data
那么,为什么数据是一个未经许可的参数?
感谢您的帮助!
答案 0 :(得分:2)
当你在强参数中允许:data
时,它只允许标量值。
标量值可以是String
,Symbol
,NilClass
,Numeric
,TrueClass
,FalseClass
,Date
类型,Time
,DateTime
,StringIO
,IO
,ActionDispatch::Http::UploadedFile
和Rack::Test::UploadedFile
,如强参数文档中所述:
https://github.com/rails/strong_parameters#permitted-scalar-values
这意味着在params散列中传递Hash
的{{1}}将不会被允许。
您正在寻找的是一种允许嵌套参数的方法。文档中也对此进行了描述:
https://github.com/rails/strong_parameters#nested-parameters
如果您的hstore密钥是动态的,您可以使用以下SO问题中描述的方法自行将动态哈希列入白名单:
rails 4 strong params + dynamic hstore keys
希望有所帮助。