references とユニークキー制約を同時に使用する方法

More than 1 year has passed since last update.


やりたいこと

references とユニークキー制約を同時に使用したいです。


実現方法

UserモデルとCommentモデルがあり、UserとCommentが1対多の想定です。


失敗例

以下のようにマイグレートファイルを作成し、実行してもユニークキー制約が張れません...

class CreateComments < ActiveRecord::Migration[5.2]

def change
create_table :comments do |t|
t.references :user, unique: true
t.timestamps
end
end
end


成功例

referencesを使わずに、明示的にuser_idカラムを追加し別途ユニークキー制約を追加すれば :ok: です。

class CreateComments < ActiveRecord::Migration[5.2]

def change
create_table :comments do |t|
t.integer :user_id
t.timestamps
end

add_index :comments, :user_id, unique: true
end
end


環境


  • ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-darwin17]

  • Rails 5.2.0