【Rails】モデルを作成する

rails

こんにちは。てくてーくです。今回はRuby on Railsのモデルを作成する方法を紹介したいと思います。それでは早速いってみましょう。

記事を書いた目的

Webアプリケーションの作成中にモデルを作成することがあったのでその方法を備忘録として記録します。また誰かのお役に立てれば幸いです。

モデルを作成する方法

今回はCustomerモデルを作成したいと思います。

rails generateコマンド

はじめにrails generateコマンドを入力します。

rails generate model [モデル名]

上のコマンドを実行すればモデルが作成されます。

[モデル名]の部分に作成したいモデルの名前を入力します。今回はCustomerモデルなのでCustomer と入力します。

rails generate model Customer

これでCustomerモデルが作成されました。

注意すべき部分はモデル名の頭文字は大文字にすることです。そしてモデル名はrailsでは慣習的に単数形を使用します。逆にコントローラー名は複数形を慣習的に使うことを頭の片隅に入れておくと良いでしょう。

(例 モデルの場合:Customer 、コントローラーの場合:Customers)

rails generateコマンド オプション(属性の追加)

このコマンドにはオプションが使えます。使えると時間短縮ができるので覚えておくと便利でしょう。どんなオプションがつけれるかというのは以下の通りです。

属性(カラム名、型情報)

name:stringemail:string などのカラム名と型情報などの属性を先ほどのコマンドの後ろに加えるだけです。

rails generate model [モデル名] [カラム名]:[型情報] [カラム名]:[型情報]
rails generate model Customer name:string email:string

references型

属性にreferences型を指定すると色々なオプションを付与してくれます。

reference:参照

今回はUserモデルにreferences型を指定してみます。user:referenceを先ほどのコマンドに加えます。

rails generate model Customer name:string email:string user:references

そうすると以下のことが自動で行われます。

  • belongs_toのコードの追加
  • インデックスと外部キー参照付きのuser_idカラムを追加
belongs_toのコード追加
class Customer <ApplicationRecord
   belongs_to :user
end

上のようにCustomerモデルに自動でbelongs_to :userが追加されます。

インデックスと外部キー参照付きのuser_idカラムを追加
classCreateCustomers<ActiveRecord::Migration[5.1]
  def change
    create_table :customers do |t|
      t.string :name
      t.string :email
      t.references :user, foreign_key: true
      t.timestamps
    end
    add_index :customers, [:user_id, :created_at]
  end
end

上はrails generateコマンドによって作成されたマイグレーションファイルです。

属性と共にインデックス及び外部キーが自動で追加されています。

rails db:migrate 実行

最後にお馴染みのrails db:migrateを実行して終了です。

まとめ

  • モデルを作成するときはrails generateコマンド
  • オプションで属性(カラム名、型情報)も同時に作成できる
  • references属性を指定すればオプションでbelongs_toや外部キー、インデックスも設定できる

コメント