首页 > 解决方案 > Rails活动记录唯一约束与postgres上的字段值

问题描述

是否可以在具有字段值的活动记录上创建唯一约束。

因此,此代码将添加 2 列的约束:

add_index :my_table,[:field_1,:field_2],:unique => true

但我希望在 field_2 == true 的地方有相同的约束

例如像这样

add_index :my_table,[:field_1,:field_2 => true],:unique => true

可能吗 ?我看到在postgres上是可能的

标签: ruby-on-railspostgresqlactiverecord

解决方案


对于部分索引,您可以使用以下where选项:

add_index :my_table, [:field_1, :field_2], unique: true, where: 'field_2 = true'
# "index_my_tables_on_field_1_and_field_2" UNIQUE, btree (field_1, field_2) WHERE field_2 = true

推荐阅读