こんにちは。てくてーくです。今回は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:string や email: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や外部キー、インデックスも設定できる
コメント