Ruby on Rails

【Rails】modelを作成する

結論

rails generateコマンドを使いましょう!

rails g model [model_name]

modelについて

modelは基本的にテーブルに対して紐付きます。

1 テーブルに対して1 modelになります!
(例外もありますが、わかりやすさ重視で)

なので
データベースからのデータの取得、加工などをして
controllerへ指定されたデータを返す
という役割を担っています。

例えば
UsersControllerというcontrollerと
UserModelというmodelがあったとします。

UsersControllerではユーザー作成や、プロフィール表示の機能を実装しています。

このアプリを使用しているユーザーが
マイページから自分のプロフィールを表示させるボタンを押した時
controllerとmodelの間では、このようなやりとりが行われます。

controllerはユーザーからの入力に合わせて
必要なデータを渡してくれるようmodelにアクセスします。

その司令を受け取ってmodelは
データベースから指定されたデータを取得
必要であればデータを使いやすい形に加工してcontrollerへ返します。

modelを作成する

それでは実際にmodelを作成してみます。

Railsでは、controllerやmodelを作成する時に
generationコマンドというコマンドが使えます。

やってみましょう。

rails generate model [model_name]

generateは、gに省略する事も可能です。
[model_name]には、作成したいmodel名が入ります。

今回は、Pokemonという名前のmodelを作成してみます!

$ rails g model pokemon
Running via Spring preloader in process 25359
      invoke  active_record
      create    db/migrate/20200523073350_create_pokemons.rb
      create    app/models/pokemon.rb
      invoke    test_unit
      create      test/models/pokemon_test.rb
      create      test/fixtures/pokemons.yml

作成されましたね!

app/models/pokemon.rbというのが、modelファイルになります。

また、同時に
db/migrate/20200523073350_create_pokemons.rbという
ファイルも作成されていますね!

これはmigrationファイルといって
modelの変更履歴を管理するためのファイルになります。

冒頭に書いているように
modelはデータベースのテーブルに紐づくようになっていますので
migrationファイルを使ってmodelが作成されたことをデータベースに教えてあげる必要があるのです。

次は実際にmigrationファイルを作って
データベースにテーブルを作成したいと思います。

migrationファイルを作成する

ファイルの作成自体はされているので、中身を確認してみます。
こんな感じになっています!

# db/migrate/20200523073350_create_pokemons.rb

class CreatePokemons < ActiveRecord::Migration[5.2]
  def change
    create_table :pokemons do |t|

      t.timestamps
    end
  end
end

create_table :pokemons do |t| ~ endで囲った中に
テーブルのカラムを定義していきます。

t.timestampsは、デフォルトで作成されるタイムスタンプカラムです。
実際には、created_atというカラム名になります。

カラムを定義してみます。

class CreatePokemons < ActiveRecord::Migration[5.2]
  def change
    create_table :pokemons do |t|
      // 追加ここから
      t.string :name
      t.integer :global
      t.integer :type_first
      t.integer :type_second
      // 追加ここまで

      t.timestamps
    end
  end
end

いくつか、カラムを定義してみました。
stringやintegerといったカラムの型と、:nameカラム名を定義しています。

カラムの定義ができましたので、migrationを実行して
データベースに変更をかけてみます。

migrationを実行する

それでは、migrationを実行してみます。

rails db:migrateというコマンドを使用します。
実行すると

$ rails db:migrate
== 20200523073350 CreatePokemons: migrating ===================================
-- create_table(:pokemons)
   -> 0.0006s
== 20200523073350 CreatePokemons: migrated (0.0006s) ==========================

-- create_table(:pokemons)と出ています!
無事にテーブルが作成されましたね!

まとめ

今回は、Railsにおけるmodelの作成方法について解説してみました。

基本的に、新しくmodelを作成する場合には
今回紹介したrails g modelコマンドで
modelファイルとmigrationファイルを作成して
rails db:migrateを使っていく事になるかと思います。

rails g modelには、様々なオプションがつけられたり、
カラムに変更をかけたい場合には、migrationファイルだけ作成して
migrateを実行していくような時もあります。

その場合の方法についても、後々まとめられればと思います。

ピックアップ記事

  1. 起動時の設定をカスタムする【Blender】
  2. 【Blender】複数バージョンを簡単に管理できる、BlenderLaunche…
  3. 【Blender】拡張機能(アドオン)の基本的な使い方
  4. 【CSS】おしゃれなラジオボタンを作る
  5. 【Blender】起動時に強制終了してしまう問題

関連記事

 
  1. Ruby on Rails

    【Rails】development? production? 開発環境ごとに処理を切り分けたい時

    Railsで、開発環境ごとに処理を切り替えたい時の方法を紹介します。ま…

  2. Ruby on Rails

    【Rails】レコードが保存済みか確認するpersisted?メソッド

    レコードが保存されているかどうかでUIの表示を切り替えたり、保存されて…

  3. Ruby on Rails

    【Rails】RSpecのお作法メモ

    RSpecを書く機会が増えてきたので、記法の備忘録として記事にします…

  4. Ruby on Rails

    【Rails】migrationでカラムを追加・削除したい

    migrationファイルでよく使う記述。テーブルにカラムを追加・削…

  5. Ruby on Rails

    【Rails】Factory already registered: エラー

    railsでアプリ開発中、最新のfeatureブランチでリベースして…

カレンダー

2023年3月
 12345
6789101112
13141516171819
20212223242526
2728293031  

最近の記事

  1. Blender

    【Blender】アニメーションでポーズを左右反転してコピペしたい時
  2. WordPress

    【WPテーマ自作】ローカル環境でWP開発ができる「Local」の導入
  3. Blenderの複数バージョンを簡単に管理できるBlenderLauncherの使い方

    Blender

    【Blender】複数バージョンを簡単に管理できる、BlenderLaunche…
  4. Blender

    起動時の設定をカスタムする【Blender】
  5. Blender

    【Blender】拡張機能(アドオン)の基本的な使い方
PAGE TOP