開発環境2
モデルとは、Railsの中でデータベースへのアクセスをはじめとする情報のやりとりに関する処理を担当しているパートで、実体は1つのクラスが定義された◯◯.rbというファイルです。ビューでデータベースに保存されているデータを表示するためには、コントローラーでモデルを利用してテーブルからデータを引き出し、ビューに渡すことになります。
テーブルとモデルの結びつきは、名前で決定する。
情報は、テーブルに保存されます。Railsからあるテーブルに保存された情報を引き出す際は、そのテーブルに対応するモデルクラスを用意します。対応関係は、テーブルとモデルクラスの名前によって決定します。
rails g modelコマンドを使用すると、DBにテーブルを作成するためのファイルとそのテーブルに対応するモデルファイルとを自動で作成することができます。実際に使用する際には「rails g model モデルクラス名(全て小文字)」というように作成したいモデルのクラス名を全て小文字にしたものを後ろに付けて実行します。
テーブルを作成しよう
rails g modelコマンドでモデルのファイルを作成した際、同時にそのモデルと結びつくテーブルの設計図も生成されています。これをマイグレーションファイルと呼びます。この段階ではまだ、DBには該当するテーブルは存在しません。このマイグレーションファイルを実行することで、初めてテーブルが作られます。
マイグレーションファイル
マイグレーションファイルは、テーブルの設計図です。マイグレーションファイルにどんなカラムを持つテーブルにするかを書き込み、実行することでテーブルが作成されます。(ターミナル:rake db:migrateコマンド)
マイグレーションファイルの編集
def changeというメソッドで、作成するカラムを指定することができます。
スキーマファイルは「rake db:migrate」を実行した際に更新が行われ、最新のマイグレーションファイルのバージョンが記録されます。先ほどの作業でtweetsテーブルを作成するためにマイグレーションを実行しました。つまり、スキーマファイルにはtweetsテーブルを作成する際に編集したマイグレーションファイルのバージョンが記録されていることになります。
schema_migrationsとはデータベースの変更履歴のようなもので、どのマイグレーションファイルまでが実行されているかが記録されていくテーブルです。マイグレーションファイルが実行された際に自動的に作成されます。schema_migrationsを確認するために、Sequel Proを利用します。Sequel Proは、テーブルを見やすく表示してくれるアプリケーションです。データベースに接続し、見たいテーブルを選択するとエクセルのような形式で表示してくれます。
注意
マイグレーションファイルは消してはいけません。実行し終わったマイグレーションファイルを削除してしまうと、schema_migrationsと齟齬が生じ問題が生じる恐れがあります。
rake db:migrateコマンドを実行すると、まずschema_migrationsを参照し、実行されていないmigrationファイルがあるかどうか調べ、あればそれを実行します。
そのため、rake db:migrateを複数回実行しても、同じmigrationファイルが再度実行されることはありません。また、一度実行されたmigrationファイルの中身を変更してもそれは実行されません。
一度変更したデータベースの状態を元に戻そう
rake db:migrateコマンドを実行した際、読み込んだmigrationファイルの記述が間違っていて、意図しない名前や型を持つテーブルができてしまうことがあります。そのような場合は、rake db:rollback コマンドを利用します。
誤った名前のカラムを追加してしまった時は、実行したマイグレーションファイルを書き換えて再度 rake db:migrateすれば良いと思うかもしれません。しかし、その方法では正しいカラムを作り直すことはできません。なぜなら、railsではマイグレーションを一度実行してしまうと、そのマイグレーションを編集して再度マイグレーションを実行することが出来ないからです。
ターミナル:rake db:rollbackコマンド
これから先新たなテーブルを作成したり、カラムの追加などテーブルに変更を加える際は常にmigrationファイルを作成します。rake db:rollbackコマンドを実行すると、データベースの状態が最新のmigrationファイルを実行する前に戻ります。
ターミナル:rails c コマンドとは「rails console」(コンソール)の略です。コンソールを実行すると作成したRailsアプリケーションのメソッドやクラスなどを実際に呼び出すことができます。ターミナルから「rails c」コマンドを実行することでコンソールを起動できます。exitでターミナルに戻る。
この記事が気に入ったらサポートをしてみませんか?