У меня есть модель с столбцом 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?