我正在尝试在我的数据库中保存哈希,但这不起作用
这是我数据库中的表
create_table "categories", force: :cascade do |t|
t.string "name", limit: 255
t.integer "client_id", limit: 4
t.integer "event_id", limit: 4
t.text "color", limit: 65535
end
在我的模型中尝试使用serialize
class Category < ActiveRecord::Base
serialize :color, Hash
end
在我的控制器中:
def category_params
params.require(:category).permit(:name, :color, :event_id)
end
当我尝试保存它时,我在我的控制台中得到它:
Parameters: {"category"=>{"event_id"=>"2", "name"=>"dwdqwd", "color"=>{"color"=>"#ad1d1d", "opacity"=>1}}}
Unpermitted parameter: color
SQL (0.4ms) INSERT INTO `categories` (`name`, `event_id`) VALUES ('dwdqwd', 2)
如何在我的数据库中保存哈希?
.permit(:color)
不起作用,因为哈希不被认为是permitted scalar type。
允许的标量类型是String,Symbol,NilClass,Numeric,TrueClass,FalseClass,Date,Time,DateTime,StringIO,IO,ActionDispatch :: Http :: UploadedFile和Rack :: Test :: UploadedFile。
您可以通过传递允许键的数组来将嵌套参数的哈希列入白名单:
params.require(:category)
.permit(:name, :event_id, color: [:color, :opacity])
要允许任何键使用空哈希:
params.require(:category)
.permit(:name, :event_id, color: {})
看到: