我想为表创建一个唯一索引,包含3列,但是 仅检查其中一个是否具有特定值:
等等 add_index:table,[:col1,:col2,:col3],unique:true但仅当col3 = true时, 否则我不关心col1,col2,:col3 = false uniqueness。
有没有办法在迁移中将其保持在数据库级别,或者我只能这样做 在模型中验证这种情况?
答案 0 :(得分:0)
我不相信你可以在数据库层有条件唯一性约束(通过迁移)。您可以在AR图层中将其添加为conditional validation,但这应该足以满足您的目的(尽管应该注意这可能会引入一些竞争条件)。即
验证[:col1,:col2],唯一性:true,if:“:col3 == true”
希望有所帮助。