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】Bumpを使用した質感表現の方法
  3. 【Rails】selectメソッドで特定の条件を満たす要素を取得する
  4. 【Blender】MMDファイルをBlenderにImportするアドオン
  5. 【Blender】レンダリング結果を新規ウィンドウで開かないようにする

関連記事

 
  1. Ruby on Rails

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

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

  2. railsをproductionモードで実行する

    Ruby on Rails

    【Rails】railsをproductionモードで実行する

    結論--environmentオプションを使用します。…

  3. Ruby on Rails

    【Rails】文字列からHTMLタグを取り除く方法

    Railsで、HTMLタグを取り除いて文字列を出力したい時があります。…

  4. Ruby on Rails

    【Rails】ActiveStorageで添付ファイルを削除したいときは、purgeを使う

    動作確認するために、active_storageでアップロードした画…

  5. Ruby on Rails

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

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

  6. Ruby on Rails

    【Rails】railsでIndex name ‘xxx’ on table…

    railsで、dbを変更するためにmigrationを実行した際、in…

カレンダー

2022年1月
 12
3456789
10111213141516
17181920212223
24252627282930
31  

最近の記事

  1. gitでファイル変更の一部をコミットする
  1. Blender

    【Blender】zip版のBlenderをBlender Launcherに移…
  2. Blenderの複数バージョンを簡単に管理できるBlenderLauncherの使い方

    Blender

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

    【Rails】findメソッドで連想配列から指定した値を検索する
  4. gitでファイル変更の一部をコミットする

    git

    git add -p でファイルの一部をコミットする【Git】
  5. Ruby on Rails

    【Rails】selectメソッドで特定の条件を満たす要素を取得する
PAGE TOP