LoginSignup
0
0

More than 3 years have passed since last update.

カラムの型_integer型とdecimal型について

Posted at

はじめに

オリジナルアプリを作成中に、カラムの型について学んだので、投稿する。

integre型について

integer型は、金額や数値などを扱いたい時に使う。

やりたかったこと

テーブルに、小数点が含まれた数値を保存したかった。
なので、integre型を使うのかと思い、カラムの型をinteger型で指定した。

t.decimal    :energy,          integer # エネルギー(kcal)
t.decimal    :protein,         integer # タンパク質(g)
t.decimal    :lipid,           integer # 脂質(g)
t.decimal    :carbohydrate,    integer # 炭水化物(g)
t.decimal    :salt_equivalent, integer# 食塩相当量(g)       

しかし、テーブルにデータは保存できたものの、小数点以下の数値は保存されていなかった。
例:
152.3としたかったのに、実際は152のような形式になってしまう。

改善したこと

integer型からdecimal型に変更した。

t.decimal    :energy,          precision: 4, scale: 1 # エネルギー(kcal)
t.decimal    :protein,         precision: 4, scale: 1 # タンパク質(g)
t.decimal    :lipid,           precision: 4, scale: 1 # 脂質(g)
t.decimal    :carbohydrate,    precision: 4, scale: 1 # 炭水化物(g)
t.decimal    :salt_equivalent, precision: 4, scale: 1 # 食塩相当量(g) 

decimal型を使うことで、小数点が含まれた数値を扱うことができる。
precisionは、小数点を含めた全ての桁数のを指定する。
scaleは、小数点の桁数を指定する。

実は、integer型は整数しか扱えない性質のようだ。

最後に

テーブルで小数点を扱いたい場合は、decimal型を指定して、raild db:migrateを行う。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0