Rails 4.2.1 mysql2 gemを使用しています。 ActiveRecordはデータ型がtinyint(1)
のmysql列をブール値として扱います。しかし、私は小さな数字として使用したい - 私はtinyint(1)
のための大丈夫です100までの値を格納したい。私はレコードを作成しようとすると、tinyint型の列にはfalse
にキャストし、私は、減価償却の警告を取得:Railsはmysql tinyint(1)をブール値と見なしますが、数字であることが必要です
> Foo.create(my_tinyint_col: 13)
(0.2ms) BEGIN
SQL (0.5ms) INSERT INTO `foos` (`my_tinyint_col`) VALUES (0)
(107.3ms) COMMIT
=> #<Foo ID: 519, my_tinyint_col: false>
DEPRECATION警告:あなたはブールへ 明示的
true
かfalse
ない値を割り当てようとしましたカラム。現在のところ、 の値はfalse
にキャストされます。これはRubyのセマンティクスに合わせて変更され、 の動作を維持したい場合は、 からfalse
にキャストしたい値を明示的に処理する必要があります。
私はtinyint(2)
へmy_tinyint_col
のデータ定義を変更した場合、問題は消える - しかし、ActiveRecordのを使用して数値としてtinyint(1)
を治療する方法はありますか?
なぜ1バイトごとに騒がしいのですか?何十億というレコードがありますか? – tadman