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を介してデータベースを操作することができます。
モデルの生成方法
モデルを生成は以下の手順で行います。
- rails generate modelでマイグレーションファイルの作成
- マイグレーションファイルの編集
- rails db:migrateでマイグレーション実行
順番に解説します。
マイグレーションファイルの作成
マイグレーションファイルとは、データベースに加える変更内容を記述するファイルになります。
作成するには rails generate model<model name>というコマンドを実行します。<model name> は User のように先頭が大文字の単数形で指定します。
実行するとdb/migrate/20190601081254_create_users.rbのようなファイルができます。なお、rails generateはrails gと省略して書くこともできるので覚えておくと良いでしょう。
マイグレーションファイルの編集
マイグレーションファイルを作成したら、エディタで必要なカラムを追加します。
マイグレーション実行
マイグレーションファイルを編集したら、rails db:migrateコマンドでマイグレーションを実行します。マイグレーションが完了すると、データベースにテーブルが作成されます。
実際に書いてみよう
今回は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
筆者プロフィール
メンター稲員さん
フリーランスエンジニア。 経験言語:Ruby、Rails、Python、C/C++、Java、Perl、HTML/CSS3、JavaScript、CoffeeScript,Node.js。 |
内容分かりやすくて良かったです!
ゆかりちゃんも分からないことがあったら質問してね!
分かりました。ありがとうございます!
TechAcademyでは、初心者でもRuby on Railsを使ったプログラミングを習得できるオンラインブートキャンプRuby講座を開催しています。
挫折しない学習方法を知れる説明動画や、現役エンジニアとのビデオ通話とチャットサポート、学習用カリキュラムを体験できる無料体験も実施しているので、ぜひ参加してみてください。