我有一个带有 5 个布尔字段的设置表。我希望能够通过 JSON 创建和更新这些字段。据我了解,Rails 将所有参数转换为字符串,因此布尔值始终返回 true。如果我发送:
{ "settings": { "setting1":true, "setting2":false } }
然后尝试做: Setting.new(params[:settings])
,这两个设置在数据库中都将为真,因为第二个设置的值false
被转换为"false"
,因此实际上计算为true
。实际上我什至不能这样做,因为我得到:
NoMethodError (undefined method `stringify_keys' for #<String:0x000000213dcbd0>)
在那条线上。互联网上的一些建议说将参数与 进行比较"true"
,然后将其存储。不过,这是一个巨大的痛苦,因为那样我就无法利用批量分配。我不想这样做:
@setting = Setting.new
@setting.setting1 = (params[:settings][:setting1].eql? "true")
...
对于所有 5 个字段,尤其是因为我必须为创建、更新甚至从其他控制器执行此操作(一些控制器接受 JSON 来创建设置对象以及它们自己的属性)。
有没有更好的方法来解决这个问题?JSON API 在 Rails 中看起来很标准,似乎会以更优雅的方式处理?