У меня есть модель с столбцом active
, которая является логической. Я хочу проверить уникальность всех вновь добавленных записей в отношении company_id
, чтобы я мог добавить столько записей, сколько хочу, с тем же company_id
в таблицу, если active
установлен на false
. Для каждого company_id
должна быть только одна запись active
.
Как бы я это написал? Я уже пробовал:
validates :company_id, :uniqueness => { :scope => :active }
Но это также подтверждает, что уникальные комбинации active
являются false
(такие, что я никогда не могу иметь больше двух company_id
в таблице с тем же статусом active
, вне зависимости от того, что active
is) - приведенная выше проверка позволяет использовать две записи для company_id
, одну с active = false
, а другую - с помощью active = true
. После того, как эти две записи включены, валидация блокирует все остальное.
Затем я попытался добавить это:
scope :active, where(:active => true)
Но это, похоже, не изменило валидацию вообще (та же проблема, что и выше).
Как я могу написать эту проверку, чтобы я мог добавить столько записей с тем же company_id
, пока active
является ложным, и только один active = true
за company_id
?