##モデルとは
データベースへのアクセスや、データのやり取りを担当しているファイル。
コントローラーがモデルを利用してデータを抽出し、それをビューに渡している。
##テーブルとモデルの名前は決まっている
種類 | 概要 | 名前例 |
---|---|---|
モデルクラス名 | 先頭は大文字、単数形 | Tweet |
モデルクラスのファイル名 | 先頭は小文字、単数形 | tweet.rb |
テーブル名 | 先頭は小文字、複数形 | tweets |
テーブルには多くのレコードが入っているから複数形?
モデルの作成には、
$ rails g model モデルクラス名(全て小文字)
を使用する。
打ちまちがえで作成したモデルを削除したいときは
$ rails d model モデル名
で削除可能。
##rails g modelコマンドでモデルファイルを作成すると、そのモデルに結びつくテーブルの設計図も一緒に生成されている。
いわゆるマイグレーションファイルが一緒に作成されている。
マイグレーションファイルは「実行」することでテーブルを作成する機能を持っている。
##マイグレーションファイルとは
テーブルの設計図。作成したいテーブルに必要なカラムを記述することで、マイグレーションファイルを実行した際にその通りにテーブルが作成される。
主なカラムの型は、
型 | 説明 | 用例 |
---|---|---|
integer | 数字 | ユーザーのidなど |
string | 文字(少なめ) | ユーザー名、パスワードなど |
text | 文字(多め) | 投稿文など |
boolean | 真か偽か | 真偽フラグ |
datetime | 日付と時刻 | 作成日時、更新日時など |
##マイグレーションファイルの実行
マイグレーションファイルを「実行」するためのコマンドは、
$ rake db:migrate
マイグレーションを実行すると、スキーマファイルというファイルも作成される。
スキーマファイルは最新のマイグレーションファイルのバージョンが記録されているファイル。
rake db:migrateコマンドを実行すると、初めにschema_migrationsを参照し、実行されていないmigrationファイルがあるかどうか調べ、あればそれを実行する。
なので、rake db:migrateを複数回実行しても、同じmigrationファイルは再度実行されない。また、一度実行されたmigrationファイルの中身を変更してもそれは反映されない。
##じゃあデータベースの中身を変えたい場合は?
migrationファイルの中の記述を間違えていて、自分の意図しないテーブルが作成されてしまった場合は、
$ rake db:rollback
コマンドを使用する。このコマンドを使用することで、データベースの状態が最新のmigrationファイルを実行する前に戻る。