Sara_Suke3の開発メモ

仕事/趣味/勉強で構築した内容をアウトプットしてます。

【Rails】reference型を使用せず外部キー制約をつけたカラムを作成したい時

オリジナルアプリ作成時のメモです。

中間テーブルを作成する際に、片方のテーブル(Note)をstring型(新規作成時にランダム英数字の文字列を生成・idに格納)にした為、以下のエラーが発生しました。

Image from Gyazo

 

ざっくり訳すと「型が不一致だから、string使うならt.stringにするなりして統一してや」って内容です。

そのままstringにするだけでは中間テーブルに外部キー制約つけられないので、「index指定」と「add_foreign_key」を追加することで解決しました。

 

修正前:

t.references :note, foreign_key: true

修正後:

t.string :note_id, index: true
t.timestamps
end
add_foreign_key :note_users, :notes, column: :note_id

 

1つの事に挑戦(idをstringに変更)すると、芋づる式に色んな経験や知識が得られるのって素晴らしいですね。

また、各種記録を残して下さった先人のライターに感謝。

参考先:

qiita.com

qiita.com