В моем приложении Rails есть два разных типа пользовательских (разрабатываемых) моделей. Врач и пациент. Это моя вина, что я не определил пользователя высшего класса и не унаследовал от него атрибуты. У них есть общий атрибут - личный идентификационный номер, и я хочу, чтобы два раза проверяли уникальность этого атрибута в обеих таблицах. Я немного искал и увидел этот ответ.
Я применил все, как там написано, но это не повлияло.
#patient.rb
class Patient < ActiveRecord::Base
...
validates_uniqueness_of :pin
validate :pin_not_on_doctors
private
def pin_not_on_doctors
Doctor.where(:pin => self.pin).first.nil?
end
end
#doctor.rb
class Doctor < ActiveRecord::Base
...
validates_uniqueness_of :pin
validate :pin_not_on_patients
private
def pin_not_on_patients
Patient.where(:pin => self.pin).first.nil?
end
end
Сначала я создал экземпляр пациента, затем экземпляр врача с той же булавкой, которую я использовал в моем первом (пациенте) случае. Rails неожиданно не выдал сообщение об ошибке и не создал экземпляр Doctor, и, что более интересно, devise также закрыл глаза на дублирующиеся электронные письма.
Как я могу решить эту проблему?