Пользовательская проверка связанной модели

Обновить

December 2018

Просмотры

720 раз

2

У меня есть поставщик и пациент модель , которые оба являются belongs_to контакта. На поставщике и пациент форм редактирования я использую fields_for: контакт для отображения связанных полех контактов.

Проблема заключается в том, что я хочу использовать различные правила проверки provider.contact и patient.contact объектов, то есть я хочу, чтобы проверить наличие first_name контакта в форме редактирования пациента, но я не хочу, чтобы проверить наличие first_name в поставщике редактировании форма.

Я пытался добавить динамическое правило проверки в модели пациента:

validate :contact_first_name_blank

def contact_first_name_blank
  errors.add('contact[first_name]', 'can not be blank') if contact.first_name.blank?
end

Он добавляет сообщение об ошибке в случае пустого поля first_name, но не HIGHTLIGHTS контакта [first_name] поля.

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

1 ответы

5

Вы добавлять ошибки в неправильной модели. Квадратная скобка обозначение используется только для обозначения HTML элементов формы, а не структура ошибки, которая задается именем атрибута, насколько я знаю.

validate :contact_first_name_blank

def contact_first_name_blank
  if (contact.first_name.blank?)
    errors.add_to_base('Contact first name can not be blank') 
    contact.errors.add('first_name', 'can not be blank')
  end
end

В fields_for проверка вызова для ошибок на объекте передается к нему, а не каким-то родительским объектам, так как она не знает об этих отношениях.