我在users
表上有一个username
列。我可以这样做:rails generate migration add_username_to_users username:string:uniq
,但是我已经有了username
列(并且我已经运行了迁移)。那么我该如何使username
列唯一?
我在users
表上有一个username
列。我可以这样做:rails generate migration add_username_to_users username:string:uniq
,但是我已经有了username
列(并且我已经运行了迁移)。那么我该如何使username
列唯一?
不是很清楚您是想确保username
中的值是唯一的,还是想过滤现有的值使其唯一。
在数据库层面上,确保唯一性的方法是通过索引。在迁移中,为该列创建一个新的唯一索引。
add_index :users, :username, unique: true
请注意,如果当前数据库中存在重复项,则创建过程将失败。在这种情况下,请首先转到CLI并删除重复项,然后运行迁移。add_index :table_name, :column_name, :unique => true
或者:
rails g migration add_index_to_table_name :column_name, :unique => true