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