在Rails中使现有列唯一

时间:2015-10-23 11:49:05

标签: ruby-on-rails ruby-on-rails-4

我在username表上有users列。 我可以像这样做一些事情:rails generate migration add_username_to_users username:string:uniq但是我已经有了username列(并且我已经运行了迁移)。

那么我怎样才能使username列唯一?

2 个答案:

答案 0 :(得分:10)

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

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

add_index :users, :username, unique: true

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

答案 1 :(得分:4)

你可以这样做:

add_index :table_name, :column_name, :unique => true

或者:

rails g migration add_index_to_column_name :column_name, :unique => true