zumi-n 未経験からエンジニア転身日記

29歳、文系、未経験、営業がエンジニア目指してるzumi-nのプログラミングに関する諸々発信ブログ

【四日目】chatspaceメッセージ送信機能 references型

メッセージ送信機能実装のため、モデル作成。

 

まずは、ターミナルでメッセージモデル作成。

ターミナル
1
$ rails g model message

 

マイグレーションファイルで、カラム設定。

201XXXXXXXXXXX_create_messages.rb
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
class CreateMessages < ActiveRecord::Migration[5.0]
  def change
    create_table :messages do |t|
      t.string :content
      t.string :image
      t.references :group, foreign_key: true
      t.references :user, foreign_key: true
      t.timestamps
    end
  end
end

 

group,userテーブルとのアソシエーション定義をする。

外部キー制約のついたカラムを追加するためにreferences型を使用するメリットは以下の通り。

1. t.references :group とすると、group_idカラム名を自動的に作ってくれる

2. indexを自動で貼ってくれる

※index:データベース機能の一つで、データの検索を高速にしてくれる仕組み。カラムに対して、インデックスを設定する。

 

t.references :groupだけだと、外部キー制約をつけられないので、

foreign_key :true とすると、外部キー制約をつけられます。