icon
icon

Railsでモデルを生成する方法を現役エンジニアが解説【初心者向け】

初心者向けにRailsでモデルを生成する方法について現役エンジニアが解説しています。モデルを簡単に説明すると、データベースのテーブルに相当します。Railsでは、マイグレーションファイルを作成、編集、実行することでモデルを作成します。

テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日  調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名  調査手法:インターネット調査

Railsでモデルを生成する方法について解説します。

 
そもそもRubyについてよく分からないという方は、Rubyとは何なのか解説した記事を読むとさらに理解が深まります。

なお本記事は、TechAcademyのオンラインブートキャンプRuby講座の内容をもとに紹介しています。

 

田島悠介

今回は、Rubyに関する内容だね!

大石ゆかり

どういう内容でしょうか?

田島悠介

Railsでモデルを生成する方法について詳しく説明していくね!

大石ゆかり

お願いします!

 

Railsのモデル(model)とは

モデルとはデータベースの情報を操作する仕組みのことです。通常、データベースを操作するには、RDBMSであればSQL文を書いて実行する必要があります。

Railsではデータベースをより簡単に扱えるように、Active Recordという仕組みが存在していて、各モデルはActive Recordを介してデータベースを操作することができます。

モデルの生成方法

モデルを生成は以下の手順で行います。

  1. rails generate modelでマイグレーションファイルの作成
  2. マイグレーションファイルの編集
  3. rails db:migrateでマイグレーション実行

順番に解説します。

マイグレーションファイルの作成

マイグレーションファイルとは、データベースに加える変更内容を記述するファイルになります。

作成するには rails generate model<model name>というコマンドを実行します。<model name> は User のように先頭が大文字の単数形で指定します。

実行するとdb/migrate/20190601081254_create_users.rbのようなファイルができます。なお、rails generateはrails gと省略して書くこともできるので覚えておくと良いでしょう。

 

マイグレーションファイルの編集

マイグレーションファイルを作成したら、エディタで必要なカラムを追加します。

 

マイグレーション実行

マイグレーションファイルを編集したら、rails db:migrateコマンドでマイグレーションを実行します。マイグレーションが完了すると、データベースにテーブルが作成されます。

[PR] Rubyのプログラミングで挫折しない学習方法を動画で公開中

実際に書いてみよう

今回はUserモデルを作ってみましょう。事前にrails newでアプリケーション作成と、rails db:migrateでデータベースの作成をしているものとします。

 

マイグレーションファイルの作成

まずはrails generate modelコマンドでマイグレーションファイルを作成しましょう。

 

$ rails generate model User
      invoke  active_record
      create  db/migrate/20190601081814_create_users.rb
      create  app/models/user.rb
      invoke  test_unit
      create  test/models/user_test.rb
      create  test/fixtures/users.yml

 

マイグレーションファイルの編集

続けてマイグレーションファイルを編集します。Userモデルなので、名前や年齢、身長といったカラムを追加してみます。

 

class CreateUsers < ActiveRecord::Migration[5.2]
  def change
    create_table :users do |t|
      # ここから追加
      t.string :name
      t.integer :age
      t.float :height
      t.float :weight
      # ここまで追加
      t.timestamps
    end
  end
end

 

マイグレーション実行

編集が終わったら、マイグレーションを実行してみましょう。rails db:migrateを実行してエラーが出なければ成功です

 

$ rails db:migrate
== 20190601081814 CreateUsers: migrating =========
-- create_table(:users)
   -> 0.0009s
== 20190601081814 CreateUsers: migrated (0.0010s) 

 

モデルとデータベースの確認

モデルが正しく作成されているか、簡単に確認しておきましょう。

rails consoleでRails用のコンソールを起動します。モデルで使用可能な new, update, find_byなどのメソッドで、データの登録や検索といったデータベースの操作を行ってみました。

 

$ rails console
Loading development environment (Rails 5.2.3)
irb(main):001:0> user = User.new
=> #
irb(main):002:0> user.update(name: "taro", age: 20, height: 160, weight: 60)
   (0.1ms)  begin transaction
  User Create (0.5ms)  INSERT INTO "users" ("name", "age", "height", "weight", "created_at", "updated_at") VALUES (?, ?, ?, ?, ?, ?)  [["name", "taro"], ["age", 20], ["height", 160.0], ["weight", 60.0], ["created_at", "2019-06-01 08:35:56.861474"], ["updated_at", "2019-06-01 08:35:56.861474"]]
   (1.0ms)  commit transaction
=> true
irb(main):003:0> User.find_by(name: "taro")
  User Load (0.2ms)  SELECT  "users".* FROM "users" WHERE "users"."name" = ? LIMIT ?  [["name", "taro"], ["LIMIT", 1]]
=> #

 

続いて、実際にデータベースを確認してみます。

今回はデータベースにSQLite3を使っていることを想定しています。デフォルトでdb/development.sqlite3にデータベースファイルが作られるので、sqlite3コマンドでファイルを指定します。

SELECT文でusersテーブルの値を読み出してみると、先ほど保存したtaroさんのデータが登録されているのがわかりますね。

 

$ sqlite3 db/development.sqlite3
SQLite version 3.24.0 2018-06-04 14:10:15
Enter ".help" for usage hints.
sqlite> SELECT * FROM users;
1|taro|20|160.0|60.0|2019-06-01 08:35:56.861474|2019-06-01 08:35:56.861474

 

筆者プロフィール

メンター稲員さん

フリーランスエンジニア。
大手SEからフリーランスのWeb系エンジニアにジョブチェンジ。

経験言語:Ruby、Rails、Python、C/C++、Java、Perl、HTML/CSS3、JavaScript、CoffeeScript,Node.js。
おうち大好きマンです。

 

大石ゆかり

内容分かりやすくて良かったです!

田島悠介

ゆかりちゃんも分からないことがあったら質問してね!

大石ゆかり

分かりました。ありがとうございます!

 

TechAcademyでは、初心者でもRuby on Railsを使ったプログラミングを習得できるオンラインブートキャンプRuby講座を開催しています。

挫折しない学習方法を知れる説明動画や、現役エンジニアとのビデオ通話とチャットサポート、学習用カリキュラムを体験できる無料体験も実施しているので、ぜひ参加してみてください。

初心者・未経験でもできる。まずはテックアカデミーに相談しよう

プログラミングを独学で学習していて、このように感じた経験はないでしょうか?

  • ・調べてもほしい情報が見つからない
  • ・独学のスキルが実際の業務で通用するのか不安
  • ・目標への学習プランがわからず、迷子になりそう

テックアカデミーでは、このような 学習に不安を抱えている方へ、マンツーマンで相談できる機会を無料で提供 しています。
30分間、オンラインでどんなことでも質問し放題です。

「受けてよかった」と感じていただけるよう カウンセラーやエンジニア・デザイナー があなたの相談に真摯に向き合います。

「自分に合っているか診断してほしい」
「漠然としているが話を聞いてみたい」

こんなささいな悩みでも大丈夫です。

無理な勧誘は一切ありません ので、まずはお気軽にご参加ください。
※体験用のカリキュラムも無料で配布いたします。(1週間限定)

今なら参加者限定の割引特典付き! 無料相談を予約する