小编典典

如何在 Ruby on Rails 迁移中使列唯一并为其编制索引?

all

我想unique在 Ruby on Rails 迁移脚本中创建一个专栏。最好的方法是什么?还有一种方法可以索引表中的列吗?

我想强制unique数据库中的列,而不是仅使用:validate_uniqueness_of.


阅读 76

收藏
2022-03-15

共1个答案

小编典典

旧版本 Rails 的简短答案(请参阅 Rails 4+ 的其他答案):

add_index :table_name, :column_name, unique: true

要将多个列一起索引,请传递一个列名数组而不是单个列名,

add_index :table_name, [:column_name_a, :column_name_b], unique: true

如果您得到“索引名称…太长”,您可以添加name: "whatever"到 add_index 方法以使名称更短。

对于细粒度的控制,有一个“ execute”方法可以直接执行 SQL。

而已!

如果您这样做是为了替代常规的旧模型验证,请检查它是如何工作的。如果没有模型级别的验证,向用户报告的错误可能不会那么好。你总是可以做到这两点。

2022-03-15