我在username
表上有users
列。
我可以像这样做一些事情:rails generate migration add_username_to_users username:string:uniq
但是我已经有了username
列(并且我已经运行了迁移)。
那么我怎样才能使username
列唯一?
答案 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