2014-11-19 4 views
0

я хотел бы создать уникальный индекс для таблицы, состоящей из 3-х колонок, но проверить только, если один из них имеет определенное значение:Рельсы индекс уникальности с определенным значением

что-то вроде add_index: table, [: col1,: col2,: col3], unique: true

, но только в том случае, если col3 = true, в противном случае меня не интересует col1, col2,: col3 = false уникальность.

Есть ли способ сделать это при миграции, чтобы сохранить его на уровне БД, или я могу только проверить этот случай в модели?

ответ

0

Я не верю, что вы можете иметь условные ограничения уникальности на уровне базы данных (через миграции). Вы можете добавить это как conditional validation на уровне AR, хотя этого должно быть достаточно для ваших целей (хотя следует отметить, что это может привести к некоторым условиям гонки). то есть.

Подтверждает [: col1, col2:], уникальность: правда, если: ": col3 == правда"

Надежда, что помогает.