質問: ユーザー登録機能でユーザーが自身で選べるuser_idが他のユーザーのuser_idと重複しないように制約を設けたいのですが、方法がよくわかりません。 調べたところ `t.index [:user_id, :follow_id], unique: true` といった書き方をしている記事を見つけたのですが、この書き方だと `user_id` と `follow_id` が被らないようにという意味合いになるようです。 なので `user_id` 同士で比較したい場合は `t.index [:user_id], unique: true` という書き方で良いのでしょうか?
回答: カッコもなしで、`t.index :user_id, unique: true`というような形となります(後から追加する場合は`add_index テーブル名, :user_id, unique: true`のようになります)。 なお、これだけだと名前の衝突のたびに**データベースエラー**となってしまうので、モデル側にも`validates :user_id, uniqueness: true`のようなバリデーションを入れておきましょう。