railsのmodelについて調べてみた

October 16, 2014
ruby rails rails4 model 外部キー DB migrate

railsでmodelを操作するときは、以下のコマンドを使う。

作成

$ rails g model テーブル名 カラム名:型 カラム名:型 ・・・

削除

$ rails d model テーブル名 カラム名:型 カラム名:型 ・・・

作成はg、削除はd。

また、外部キーを追加する場合にはこうする。

作成(外部キー有)

$ rails g model テーブル名 カラム名:型 カラム名:型 外部キーのテーブル名:references

削除(外部キー有)

$ rails d model テーブル名 カラム名:型 カラム名:型 外部キーのテーブル名:references

既存のテーブルに外部キーを追加する場合は、上記のコマンドでは追加できない。その場合はmigrationを用いる。

$ rails g migration テーブル名 外部キーのテーブル名:references

ちなみに、railsには以下の規約がある。なので上記のテーブル名は小文字かつ単数形である必要がある。

テーブル名とクラス名

  • テーブル名は複数形
  • 単語の区切りはアンダーバー(_)
  • 対応するクラス名は単語の先頭を大文字にして _ を取り除いたもの

キーのカラム名

  • 主キーのカラム名は「id」
  • 外部キーのカラム名は「テーブル名の単数_id」

日付関連のカラム名

  • DATE型のカラムには名前を 「受動態_on」
  • TIMESTAMP型のカラムには名前を「受動態_at」
  • 更新日時、作成日時は「updated_at」、「created_at」

結合テーブル

  • 関連させたいテーブル名をくっつけた名前にする
  • カラム「id」を作らずに、関連させる2つのキーのセットを主キーにする

参考: Railsドキュメント

型一覧

rails g model sqlite mysql postgresql ruby
:binary bolb bolb bytea String
:boolean boolean tinyint(1) boolean TrueClass/FalseClass
:date date date date Date
:datetime datetime datetime timestamp Time
:decimal decimal decimal decimal BigDecimal
:float float float float Float
:integer integer int(11) integer Fixnum
:string varchar(255) varchar(255) character varying(256) String
:text test text text String
:time datetime time time Time
:timestamp datetime datetime timestamp Time

ちなみに主キーは自動的に作成されるので、rails g id:primary_keyとかで作る必要はない。

あとは以下のコマンドで反映させればOK

rake db:migrate

DBを反映前の状態に戻したい場合は以下のコマンドを使う。

DBを1つ前に戻す

$ rake db:rollback

DBを最初に戻す

$ rake db:migrate VERSION=0