

タイトルの通りです。before_type_castなどを駆使すればワークアラウンドにはなると認識しているのですが、変更箇所が多岐にわたるためconfigなど一か所で一括適用できると嬉しいです。  
ちなみにこれって仕様としての経緯（githubのMRやissueなど）ってどこかで見れないですかね。  
なんでこんな仕様なのか気になってます。

# 再現手順

POST

[code]

    # request json
    
    {
      "user_name": "test",
      "age": true
    }
    
[/code]

# 期待する挙動

400 Error

# 実際の挙動

201 Created

[code]

    # response json
    
    {
      "user_name": "test",
      "age": 1
    }
    
[/code]

# バージョン

Rails version: 5.0.1

Ruby version: 2.3.1


CC BY-SA 4.0
2018-08-20T01:24:27.950
47637
2018-08-20T01:52:51.227
29783
question
ruby-on-rails
integerのカラムにbooleanのtrueを送るとintegerの1として扱われてしまうので、booleanとして扱うように一括で設定する方法はないですか

[code]

    mysql> select true from dual;
    +------+
    | TRUE |
    +------+
    |    1 |
    +------+
    1 row in set (0.00 sec)
    
[/code]

もし使っているのが mysql ならば、上記のように、データベースにおいて true と 1 が等価です。

もし true をはじきたいのならば、 controller
で受け取ったパラメータが、間違いなく数字のみの文字列であるかを判定する必要があると思います。たとえば

[code]

    /^[0-9]*$/ === params[:age]
    
[/code]

とか。


CC BY-SA 4.0
2018-08-20T01:52:51.227
47639
2018-08-20T01:52:51.227
754
47637
answer