なべしす

独立系SI企業から完全異業種のベンチャー企業に転職、社内のITインフラを整えるべく颯爽と登場した自称天才プログラマー俺のハートフルブログ

Rails migration decimalカラムをデフォルトで作成すると小数点以下が0桁になるから気をつけよう

decimalをデフォルトで作成すると小数点以下が入力できない

例えば重さを保存するカラムを作る場合はmigrationファイルにこんな感じで書きますよね?

class CreateHoges < ActiveRecord::Migration[5.1]
  def change
    create_table :hoges do |t|
      t.decimal :weight
    end
  end
end

しかし、設定値なしでdecimalカラムを作成する場合

`weight` decimal(10,0) DEFAULT NULL

で作成されてしまうんです。

面倒臭がらずに許容桁数を指定しましょう

桁数の指定optionは以下の通りです。

option value
precision 全体の桁数
scale 小数点以下の桁数

以下のように書いた場合は全体で6桁、小数点以下2桁です。

class CreateHoges < ActiveRecord::Migration[5.1]
  def change
    create_table :hoges do |t|
      t.decimal :weight, precision: 6, scale: 2
    end
  end
end

注意点

  • precisionは全体の桁数です。
  • precisionは整数の桁数ではないです。