ActiveRecord проверяет уникальность с областью действия, разрешающей Nil по области
У меня есть проверка, которая выглядит так:
class Book < ActiveRecord::Base
belongs_to :author
validates :name, uniqueness: { scope: :author_id }
end
Проблема заключается в том, что я хочу разрешить дубликаты имен, где идентификатор автора равен нулю. Есть ли способ сделать это, используя метод validates (а не пользовательскую проверку)?
Ответы
Ответ 1
Да, с Proc
и :unless
на валидаторе.
class Book < ActiveRecord::Base
belongs_to :author
validates :name, uniqueness: { scope: :author_id }, unless: Proc.new { |b| b.author_id.blank? }
end
Рекомендуемое чтение: http://guides.rubyonrails.org/active_record_validations.html#using-a-proc-with-if-and-unless
Ответ 2
Сделать условным:
validates :name, uniqueness: { scope: :author_id }, if: :author_id?