Ruby on Rails(以下、Rails)は、Webアプリケーションを迅速に開発するための強力なフレームワークです。Railsの中心的な概念の一つは、データベースとモデルの管理です。このセクションでは、Railsで「モデル」を作成し、それらをデータベースに保存する方法について詳しく解説します。
Railsのモデルとは?
Railsのモデルは、アプリケーションのビジネスロジックやデータ操作のためのクラスです。モデルは、通常、データベースのテーブルに対応し、テーブルの行をオブジェクトとして表現します。モデルは、データの検証、コールバック、関連付けなど、アプリケーションのデータに関連する処理を担当します。

例えば、Article
というモデルがあった場合、これはarticles
テーブルに対応しており、記事の情報(タイトル、内容、作成日など)を管理します。
モデルの作成
モデルを作成するには、Railsのコマンドラインツール(CLI)を使用します。以下のコマンドを実行することで、新しいモデルを作成できます。
bashrails generate model Article title:string content:text published_at:datetime
このコマンドは、以下のことを行います:
-
Article
モデルを作成 -
articles
というマイグレーションファイルを生成 -
title
(文字列)、content
(テキスト)、published_at
(日付時刻)の3つのカラムを持つデータベーステーブルを定義するマイグレーションファイルを作成
上記のコマンドを実行すると、次のようなマイグレーションファイルが生成されます。
rubyclass CreateArticles < ActiveRecord::Migration[6.0]
def change
create_table :articles do |t|
t.string :title
t.text :content
t.datetime :published_at
t.timestamps
end
end
end
生成されたマイグレーションファイルを実行することで、実際にデータベースにarticles
テーブルが作成されます。マイグレーションを実行するには、次のコマンドを使用します。
bashrails db:migrate
これにより、articles
テーブルがデータベースに作成され、Article
モデルがそのテーブルに対応します。
モデルでのバリデーション(検証)
Railsのモデルは、データの検証を簡単に行うことができます。例えば、Article
モデルでタイトルが空でないことを検証したい場合、次のようにバリデーションを追加します。
rubyclass Article < ApplicationRecord
validates :title, presence: true
validates :content, presence: true
end
このコードは、Article
オブジェクトが保存される前に、タイトルとコンテンツが空でないことを検証します。もし空であれば、保存は行われず、エラーメッセージが返されます。
モデルの保存とデータベースへの反映
モデルにデータを保存するには、create
やnew
とsave
メソッドを使います。これにより、オブジェクトをデータベースに挿入することができます。
新しい記事の作成と保存
rubyarticle = Article.new(title: "新しい記事", content: "この記事の内容です。", published_at: Time.now)
article.save
このコードは、Article
オブジェクトを新しく作成し、その内容をデータベースに保存します。save
メソッドは、データが検証を通過した後にデータベースに保存されます。もし検証に失敗した場合、保存は行われず、エラーメッセージが表示されます。
create
メソッドを使用する方法
create
メソッドを使うと、オブジェクトの作成と保存を一度に行うことができます。
rubyarticle = Article.create(title: "新しい記事", content: "この記事の内容です。", published_at: Time.now)
この場合、create
メソッドはnew
とsave
を組み合わせたものと考えられ、オブジェクトが作成され、そのままデータベースに保存されます。
モデルの検索とデータ取得
Railsのモデルには、データベースから情報を簡単に取得するための便利なメソッドが用意されています。例えば、Article
モデルで最初の記事を取得するには、次のようにします。
rubyarticle = Article.first
これにより、articles
テーブルから最初のレコードが取得されます。また、特定の条件で記事を検索することもできます。
rubyarticle = Article.find_by(title: "新しい記事")
これにより、タイトルが「新しい記事」と一致する最初のArticle
オブジェクトが取得されます。
モデル間の関連付け
Railsでは、モデル間で関連付けを行うことができます。例えば、Article
モデルとComment
モデルがある場合、1対多(one-to-many)の関係を設定することができます。
rubyclass Article < ApplicationRecord
has_many :comments
end
class Comment < ApplicationRecord
belongs_to :article
end
このように関連付けを行うことで、article.comments
でその記事に関連するコメントを取得したり、コメントが属する記事をcomment.article
で取得することができます。
コールバック
Railsでは、モデルに対して特定のタイミングで自動的に呼び出されるコールバックを設定することができます。例えば、Article
が保存される前にタイトルを大文字に変換したい場合、次のようにします。
rubyclass Article < ApplicationRecord
before_save :capitalize_title
private
def capitalize_title
self.title = title.capitalize
end
end
before_save
コールバックは、save
メソッドが呼ばれる前にタイトルを大文字に変更します。このようにコールバックを活用することで、データの整形や処理を自動化できます。
結論
Railsのモデルは、データベースとやり取りを行う中心的な役割を果たします。モデルを使用することで、データの検証、保存、検索、関連付け、コールバックなど、様々な機能を簡単に実現できます。これにより、RailsでのWebアプリケーション開発が迅速かつ効率的になります。