外部キー制約のカラム、references型の表記の仕方に注意がいります。
具体例を見てみましょう。
messagesテーブル
column | type | etc |
---|---|---|
body | text | |
image | string | |
group_id | references | foreign_key |
user_id | references | foreign_key |
このようなmesaagesテーブルがある場合のマイグレーションファイルの表記はどうなるのでしょうか?
class CreateMessages < ActiveRecord::Migration[5.0]
def change
create_table :messages do |t|
t.text :body
t.string :image
t.references :group, foreign_key: true
t.references :user, foreign_key: true
t.timestamps
end
end
end
6,7行目に注目してください。messagesテーブルの設計図では「group_id」という名前だったのに「group」のみの表記になっています。これはreferences型の特徴で「group」のみで「group_id」と同じ解釈になっているので「group_id」と書いてしまうと、「group_id_id」となってしまいエラーが起きてしまうので気をつけましょう。