Я создал обратный вызов при создании нового объекта Client вместо использования метода проверки validates_uniqueness_of
, потому что:
- Я хочу найти уже существующего клиента
- Добавитьсуществующие сведения о клиенте к моему базовому сообщению об ошибке
Мой вопрос: Есть ли более элегантный способ достижения этого, чем мое решение ниже?
У меня есть следующее модель :
class Client < ActiveRecord::Base
before_validation_on_create :prevent_duplicate_clients
private
def prevent_duplicate_clients
client = self.class.find(:all, :conditions => ["first_name = ? AND middle_name = ? AND last_name = ? AND date_of_birth = ?", self.first_name, self.middle_name, self.last_name, self.date_of_birth])
if client.size >= 1
self.errors.add(:base, "Client exists as #{client.first.name}")
false
end
end
end
Примечание: