【Rails】reference型を使用せず外部キー制約をつけたカラムを作成したい時
オリジナルアプリ作成時のメモです。
中間テーブルを作成する際に、片方のテーブル(Note)をstring型(新規作成時にランダム英数字の文字列を生成・idに格納)にした為、以下のエラーが発生しました。
ざっくり訳すと「型が不一致だから、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に変更)すると、芋づる式に色んな経験や知識が得られるのって素晴らしいですね。
また、各種記録を残して下さった先人のライターに感謝。
参考先: