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. 【C97】冬コミ申し込みました!
  2. 【Rails】オブジェクトの中身をログに出力する
  3. 【WPテーマ自作】UnderScoresの導入
  4. 【WPテーマ自作】ローカル環境でWP開発ができる「Local」の導入
  5. 【C97】冬コミ受かってました

関連記事

  1. 【Rails】オブジェクトの中身をログに出力する

    Ruby on Rails

    【Rails】オブジェクトの中身をログに出力する

    オブジェクトの中身をデバッグしたりする時に便利出力結果をみやすい形に…

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

    Ruby on Rails

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

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

  3. Ruby on Rails

    [Rails]findメソッドで連想配列から指定した値を検索する

    目次findメソッドとは基本的な使い方selectとの違い連…

カレンダー

2020年7月
 12345
6789101112
13141516171819
20212223242526
2728293031  

最近の記事

  1. railsをproductionモードで実行する
  2. 【WPテーマ自作】ローカル環境でWP開発ができる「Local」の導入
  1. その他

    WordPressに移行してみました
  2. 【WPテーマ自作】ローカル環境でWP開発ができる「Local」の導入

    WordPress

    【WPテーマ自作】ローカル環境でWP開発ができる「Local」の導入
  3. イラスト

    夏コミC94お疲れさまでした。
  4. App

    【ツール開発】ポケモンの種族値と実数値を調べるツール – 1
  5. 同人イベント

    【C97】冬コミ申し込みました!
PAGE TOP