作って学ぶRuby on Rails Vol.11 Modelをつかってみよう!


作って学ぶRuby on Rails Vol.11 Modelをつかってみよう!
目次
  1. Model
  2. マイグレーション機能
  3. なぜ手動ではなくRubyonRailsに委ねるのか
  4. Modelの作成

Model

Ruby_on_Rails_model1

今までに、ControllerとViewの作成により、Webサイトを構築してきましたが、本項以降はModelを加えたMVC全てを利用してWebアプリケーションを構築していきます。

また、前項でデータベースについて触れていますが、RubyonRailsではデータベースとのやりとりを行うクラスがModelになります。ModelはActiveRecord

データベースとのやりとりを行うには、通常はSQLSQLを意識せずにデータベースとのやりとりを行う

マイグレーション機能

RubyonRailsでは、Migration(マイグレーション)と呼ばれる機能を利用し、データベースに対してテーブルを作成したり、カラムの追加、削除といった変更を行うことができます。

マイグレーションとは

RubyonRailsを利用した開発ではない場合、通常はデータベースへのテーブル作成、カラム追加・削除等は「SQL」と呼ばれる、データベースへの命令文を開発者が実行して行います。

RubyonRailsでは、開発者自身はこういったSQLを直接発行することはほとんどありません。その代わりに、RubyonRailsにSQLの実行を委ねます。ただし、RubyonRailsに実行を委ねる場合はマイグレーションファイルを作成した後にコマンドを実行するという2段階のアクションが必要になります。

また、カラムの追加や削除を行う度にマイグレーションファイルを一つずつ作成しなければならないのでファイル数が徐々に増えていきます。

なぜ手動ではなくRubyonRailsに委ねるのか

手動で行う場合と、RubyonRailsに委ねる場合の比較です。

手動Ruby on Rails

上の表のように、手動に比べて若干手軽ではありませんが、履歴の管理や保存ができるので保守性において優れています。

Rubyでのサービス開発スキルが身に付く

無料カウンセリングはこちら

Modelの作成

実際にModelとマイグレーションファイルを作成してみましょう。

ここでは、ユーザー情報を管理する、UserというModelを作成して解説していきます。

サーバーが起動中の場合は、Ctrl+Cでサーバーを停止させます。

その後下記のコマンドを実行してください。

※数十秒かかる場合があります。


$ rails generate model user

上記コマンドはUserというModelを作成するという意味になります。

Ruby_on_Rails_model2

実行すると上の図のように表示され、ファイルが2つ生成されたことが分かります。

このように、Modelを作成する際はセットでマイグレーションファイルも作成されます。

なぜセットで作成されるかというと、Modelはマイグレーションファイルを実行し、データベース上にテーブルを作成しなければ利用できない

生成された、db/migrate/yyyyMMddHHmmss_create_users.rbを開いてみましょう。

このファイルが、マイグレーションファイルです。

yyyyMMddHHmmssの部分には、コマンドを実行した日時が入ります。

これにより、ファイル名でデータベースへの変更履歴を時系列で管理することができます。

Ruby_on_Rails_model3

現段階では、usersというテーブルを作成するというスクリプトのみ記述されています。

続いて下記のファイルがUserというModelになります。

app/models/user.rb

Ruby_on_Rails_model4

上の図のように、初期状態では2行しかありません。

前述したように、Modelはマイグレーションファイルを実行し、テーブルを作成しなければ利用できないので、次項でマイグレーションファイルに手を加えていきます。

NEXTLESSONマイグレーションを活用しよう!マイグレーションを活用しよう!

PREVLESSONデータベースを学ぼう!データベースを学ぼう!

目次-Ruby&RubyonRailsテキスト目次目次-Ruby&RubyonRailsテキスト目次


関連記事

CodeCampus編集部
この記事を書いた人
CodeCampus編集部
まずは7日間お試し!人気プログラミング講座を無料公開中
オンライン・プログラミングレッスンNo.1のCodeCamp