在Rails中使现有列唯一

7

我在users表上有一个username列。我可以这样做:rails generate migration add_username_to_users username:string:uniq,但是我已经有了username列(并且我已经运行了迁移)。那么我该如何使username列唯一?

2个回答

16

不是很清楚您是想确保username中的值是唯一的,还是想过滤现有的值使其唯一。

在数据库层面上,确保唯一性的方法是通过索引。在迁移中,为该列创建一个新的唯一索引。

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

3
你可以这样做:
add_index :table_name, :column_name, :unique => true

或者:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接