在Rails中使现有列唯一

Jen*_*sky 5 ruby-on-rails ruby-on-rails-4

usernameusers桌上有专栏.我可以像这样做一些事情:rails generate migration add_username_to_users username:string:uniq但我有username专栏(而且我已经运行了迁移).

那么我怎样才能让username专栏独一无二呢?

Sim*_*tti 12

如果您想确保值username是唯一的,或者您想要将现有值过滤为唯一,则不是很清楚.

在数据库级别,确保唯一性的方式是通过索引.在迁移中,为列创建新的唯一索引.

add_index :users, :username, unique: true
Run Code Online (Sandbox Code Playgroud)

请注意,如果当前数据库中有重复项,则创建将失败.在这种情况下,首先转到CLI并删除重复项,然后运行迁移.