Model
今までに、ControllerとViewの作成により、Webサイトを構築してきましたが、本項以降はModelを加えたMVC全てを利用してWebアプリケーションを構築していきます。
また、前項でデータベースについて触れていますが、RubyonRailsではデータベースとのやりとりを行うクラスがModelになります。ModelはActiveRecord
データベースとのやりとりを行うには、通常はSQLSQLを意識せずにデータベースとのやりとりを行う
マイグレーション機能
RubyonRailsでは、Migration(マイグレーション)と呼ばれる機能を利用し、データベースに対してテーブルを作成したり、カラムの追加、削除といった変更を行うことができます。
マイグレーションとは
RubyonRailsを利用した開発ではない場合、通常はデータベースへのテーブル作成、カラム追加・削除等は「SQL」と呼ばれる、データベースへの命令文を開発者が実行して行います。
RubyonRailsでは、開発者自身はこういったSQLを直接発行することはほとんどありません。その代わりに、RubyonRailsにSQLの実行を委ねます。ただし、RubyonRailsに実行を委ねる場合はマイグレーションファイルを作成した後にコマンドを実行するという2段階のアクションが必要になります。
また、カラムの追加や削除を行う度にマイグレーションファイルを一つずつ作成しなければならないのでファイル数が徐々に増えていきます。
手動で行う場合と、RubyonRailsに委ねる場合の比較です。
手動Ruby on Rails
上の表のように、手動に比べて若干手軽ではありませんが、履歴の管理や保存ができるので保守性において優れています。
実際にModelとマイグレーションファイルを作成してみましょう。
ここでは、ユーザー情報を管理する、UserというModelを作成して解説していきます。
サーバーが起動中の場合は、Ctrl+Cでサーバーを停止させます。
その後下記のコマンドを実行してください。
※数十秒かかる場合があります。
$ rails generate model user
上記コマンドはUserというModelを作成するという意味になります。
実行すると上の図のように表示され、ファイルが2つ生成されたことが分かります。
このように、Modelを作成する際はセットでマイグレーションファイルも作成されます。
なぜセットで作成されるかというと、Modelはマイグレーションファイルを実行し、データベース上にテーブルを作成しなければ利用できない
生成された、db/migrate/yyyyMMddHHmmss_create_users.rbを開いてみましょう。
このファイルが、マイグレーションファイルです。
yyyyMMddHHmmssの部分には、コマンドを実行した日時が入ります。
これにより、ファイル名でデータベースへの変更履歴を時系列で管理することができます。
現段階では、usersというテーブルを作成するというスクリプトのみ記述されています。
続いて下記のファイルがUserというModelになります。
app/models/user.rb
上の図のように、初期状態では2行しかありません。
前述したように、Modelはマイグレーションファイルを実行し、テーブルを作成しなければ利用できないので、次項でマイグレーションファイルに手を加えていきます。