有允许的参数:
{
"string_value": "value",
"boolean_value": "true/false",
"other_value": "blabla"
}
我需要像这样将
boolean_value
转换为布尔值ActiveRecord::Type::Boolean.new.deserialize
但是当我允许参数时:
ActiveRecord::Type::Boolean.new.deserialize(params.permit(:boolean_value)[:boolean_value])
它无法正常工作,因为结果总是
true
。
如何正确传递并允许此参数?
我有点困惑你是说
params[:boolean_value]
的值是"true/false"
还是"true"
还是"false"
?
如文档中所述,以下值将被强制为false
、[ false, 0, "0", :"0", "f", :f, "F", :F, "false", :false, "FALSE", :FALSE, "off", :off, "OFF", :OFF]
、""
将是nil
,其他所有值都将是true
。
实现相当简单来源
所以
"true/false"
将是true
。
示例:
["true/false","true","false",""].map do |value|
{value => ActiveModel::Type::Boolean.new.deserialize(value)
end
#=> [ {"true/false" => true},{"true" => true}, {"false" => false}, {"" => nil}]