「押さえておきたいWeb知識」で検索お願いします!

[Rails入門] Modelの作成方法を分かりやすく解説!

「RailsのModelの作成方法が分からない」、「Modelの作成方法を詳しく知りたい」などお悩みを抱えている方はいないでしょうか?

このページでModelの作成方法を分かりやすく解説していきます。

最後まで是非読んでいただければと思います。

1.Modelとは?

通常、データを利用するWebアプリケーションを作成する場合、データベースというものを使用します。

そして、データベースにデータ保存したり、データベースからデータ検索するためにSQLという言語を使用します。

しかし、SQLという言語を駆使するには、SQLの使い方をしっかりと習得する必要があります。

SQLの使い方を習得せずにデータベースを利用するとデータ保存、検索時に誤った処理をしてしまう可能性があり、データ破損を招く原因となります。

そのため、データベースへの正確なアクセスが求められます。

このようにデータベース利用は手間がかかります。

そこで手間がかからないように設計されたのがMVCフレームワークのModelです。

通常SQLを使用してデータ検索をする場合、SQL文が複雑になりますが、Modelを使用してデータ検索を行う場合、簡単にデータ検索ができます。

Modelでは簡単にデータ検索できる部品が用意されており、これらの部品が自動的にデータ検索するという仕組みになっています。




2.データベースとは?

上記でデータを保存したり、検索したりするためにデータベースが必要なことが分かりましたが、そのデータベースにも種類があります。

通常、異なるデータベースを使用する場合、記述するコードは異なります。

しかし、Railsではどのデータベースを利用しても記述するコードはすべて同じです。

なぜ、どのデータベースを利用しても記述するコードがすべて同じになるのでしょうか。

データベースの情報はプログラムとは別の設定ファイルで管理されているからです。

この設定ファイルの内容を書き換えるだけでアクセスするデータベースの種類などを変更できるようになっています。

このような仕組みになっているので、Railsではどのデータベースを利用しても記述するコードに変わりはないのです。




3.Model作成方法

上記で「Modelとは?」、「データベースとは?」を解説していきましたが、次にModelを作成していきましょう。

「WebApp」というWebアプリケーションの作成を終えているという前提でお話を進めていきます。

Webアプリケーションの作成方法を詳しく知りたい方は以下の記事をご覧ください。

[入門者向け] Ruby on Railsのアプリケーション作成方法を分かりやすく解説!

Modelの作成はコマンドプロンプトで以下のようにコマンドを実行します。

rails g model モデル名 カラム名1:カラムの型1 カラム名2:カラムの型2

上記を見て分かるかと思いますが、Modelを作成する場合、「rails g model」の後に「モデル名」、「カラム名:カラムの型」を続けて記述していきます。

「カラム名:カラムの型」が複数ある場合、スペースを空けて記述していきます。

それでは「post」というModelを作成していきましょう。

コマンドプロンプトを開き、Webアプリケーション名「WebApp」というフォルダに移動しましょう。

注意

「WebApp」へのフォルダ移動は「cd WebApp」で行うことができます。

上記のコマンドを実行すると以下のファイルが自動生成されます。

自動生成されたファイルがどのようなものなのかを見ていきましょう。

post.rb

postのモデルファイルとなっています。

post_text.rb

テスト用postのモデルファイルとなっています。

xxxx_create_posts.rb

xxxxはファイルが生成された日付を表す数字が記載されています。

これはマイグレーションというデータベース更新に関するファイルとなっています。

posts.yml

テストに関する情報を記述したファイルとなっています。

モデルファイルは「post.rb」のみで残りの3つのファイルはデータベースやテスト用のファイルとなっています。

それではモデルファイル「post.rb」の中身を詳しく見ていきましょう。

モデルファイル「post.rb」の中身を見ると具体的な処理が記載がされていません。

モデルを作成し、データベースのテーブルを利用するだけなら、このまま使用することができます。

「Post」というクラスは「ApplicationRecord」というクラスを継承して作成されていることが分かります。

「ApplicationRecord」というクラスはmodelフォルダの中の「application_record.rb」の内容を引き継いでいます。

「application_record.rb」のファイルを開いてみると、「ApplicationRecord」というクラスは「ActiveRecord::Base」というクラスを継承して作られています。

つまり、すべてのモデルは「ActiveRecord」というクラスをもとに作られていることになります。

上記の作業だけではまだデータベースを使用できません。

データベースを利用するためにはマイグレーションを実行する必要があります。

マイグレーションとはデータベースを更新する作業のことです。

マイグレーションファイルにデータベースへの追加・削除・修正情報を記載することでデータベースを最新状態に保つことができます。

それではコマンドプロンプトで以下のようにコマンドを入力して実行しましょう。

これでマイグレーションが実行され、データベースにモデル用のテーブルが作成されました。

マイグレーションファイルがどのようになっているのか見てみましょう。

マイグレーションファイルはdbフォルダのmigrateというフォルダの中にあります。

今回のマイグレーションファイルは「20200427002157_create_posts.rb」という名前のファイルです。

上記のファイルではデータベース変更に関するソースコードが記述されています。

changeメソッド内でcreate_tableメソッドが実行されています。

do~endの間にカラム名とカラムの型を記述して設定しています。




4.Ruby on Railsを学ぶことができるオススメの教材

Ruby on Railsを学習している皆様にオススメの教材をご紹介させていただきます。

現場で使える Ruby on Rails 5速習実践ガイド

以下の本はRuby on Railsの学習を一通り終えてある程度知識を身につけた方にオススメしたい本です。

 

現場で使える Ruby on Rails 5速習実践ガイド」は現場で実際にどのように使われているのかという視点も交えて解説されています。

そのため、初心者の方が次のステップに進むために最適な本となっていますので、オススメです。

これらの本で是非学習を進めてみてはいかがでしょうか?

レベル別におすすめの本も紹介していますので、どのような本がオススメか知りたい方はこちらもご覧になって下さい。

[2021年最新版] Ruby on Rails を学ぶことができるおすすめの本

Udemy

UdemyではRuby on Railsを学ぶことができる講座を多数取り扱っています。

以下の記事でRuby on Railsを学ぶことができるオススメの講座をまとめていますので、よかったらご覧になって下さい。

[必見!] Udemy(ユーデミー) おすすめのRuby on Rails講座

プログラミングスクール

TechAcademyWebCampCodeCampTech CampなどでRuby on Railsを学ぶことができます。

それぞれ無料体験も行っているので、どのようなものか試してみるのもいいでしょう。

以下の記事で各プログラミングスクールをまとめているのでこちらもよかったらご覧になってください。

プログラミングスクール TechAcademy(テックアカデミー)とは? 特徴・口コミをまとめてみました! プログラミングスクール DMM WebCamp ビジネス教養コースとは? 特徴・口コミをまとめてみました! プログラミングスクール CodeCamp(コードキャンプ)とは? 特徴・料金・口コミをまとめてみました! [感想・体験談アリ!] 実際にTech Camp(テックキャンプ)のプログラミング教養でプログラミングをやってみた! [感想・体験談あり!] Tech Camp(テックキャンプ)のプログラミング教養の学習内容は? 働きながらTECH CAMP(テックキャンプ)で学ぶことはできるのか? 結論:可能です! TECH CAMP(テックキャンプ)ではどのような言語・技術を学ぶことができるの? TECH CAMP(テックキャンプ)の受講料はどのくらい? 安く通う方法もお話します! [体験談・感想あり!]TECH CAMP(テックキャンプ)でどのようなスキルが身につくの?




5.ポイント

modelの作成コマンド

rails g model モデル名 カラム名1:カラムの型1 カラム名2:カラムの型2

マイグレーションファイルの実行

rails db:migrate

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です