5 つのブール値フィールドを持つ設定テーブルがあります。これらのフィールドを JSON 経由で作成および更新できるようにしたいと考えています。私が理解していることから、Rails はすべてのパラメーターを文字列に変換するため、ブール値は常に true を返します。私が送信した場合:
{ "settings": { "setting1":true, "setting2":false } }
そして、やってみてください: 、2 番目の設定の値が に変換され、実際には に評価されるためSetting.new(params[:settings])
、両方の設定がデータベースで true になります。実際、私はそれを行うことさえできません。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 ではかなり標準的なように見えますが、これはよりエレガントな方法で処理されるように見えますか?