Как добавить, где в проверяет уникальность - PullRequest
0 голосов
/ 12 апреля 2019

Я хочу добавить точку проверки на уникальность.

Это неверно:

validates :identifier_number, uniqueness: true, if: :is_active?

Проверяется только тогда, когда активна запись, которую я хочу проверить.

Я хочу "что-то вроде этого":

validates :identifier_number, uniqueness: proc { where is_active: true }

Проверять каждую запись, активную или нет, но только в отношении "активных" записей.Таким образом, две неактивные записи могут иметь один и тот же идентификатор идентификатора, но ни одна запись не может иметь тот же номер идентификатора, что и любая активная запись.

Ответы [ 2 ]

3 голосов
/ 12 апреля 2019

Вы можете сделать это с помощью следующего:

validates_uniqueness_of :identifier_number, conditions: -> { where(is_active: true) }

Доки API для этого: https://apidock.com/rails/ActiveRecord/Validations/ClassMethods/validates_uniqueness_of

0 голосов
/ 12 апреля 2019

Вы можете сделать это следующими способами

validates :identifier_number, uniqueness: true, if: :is_active?

def is_active?
  is_active
end

OR

 validates :identifier_number, uniqueness: true,
   if: Proc.new { |a| a.is_active }

Руководство по рельсам объясняет это довольно четко (https://guides.rubyonrails.org/active_record_validations.html).

Надеюсь, это поможет вам!

...