我想unique在 Ruby on Rails 迁移脚本中创建一个专栏。最好的方法是什么?还有一种方法可以索引表中的列吗?
unique
我想强制unique数据库中的列,而不是仅使用:validate_uniqueness_of.
:validate_uniqueness_of
旧版本 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 方法以使名称更短。
name: "whatever"
对于细粒度的控制,有一个“ execute”方法可以直接执行 SQL。
execute
而已!
如果您这样做是为了替代常规的旧模型验证,请检查它是如何工作的。如果没有模型级别的验证,向用户报告的错误可能不会那么好。你总是可以做到这两点。