С пользовательской проверкой в пользовательских данных: например, если мы хотим проверить, что empid не пуст:
#in UserDetail
validate :additional_details_is_valid
def additional_details_is_valid
if !self.additional_details.is_a?(Hash) || self.additional_details[:empid].blank?
self.errors.add(:additional_details, "Empid is blank")
end
end
Теперь нам просто нужно заставить объект User проверить, что связанный с ним объект user_detail действителен.
#in User
validates_associated :user_detail
Теперь, если empid не установлен, объект UserDetail будет жаловаться, а это, в свою очередь, заставит пользовательский объект жаловаться при попытке его сохранить.