У меня есть эта простая настройка: учетная запись #has_one
Владелец класса Person.Rails вложенная форма, игнорирующая условия проверки
Теперь форма для создания и обновления учетной записи использует вложенную форму для атрибутов человека - например, имя, адрес электронной почты и пароль.
Есть валидация этих атрибутов - пароль требует подтверждения электронной почты не может быть пустым и т.д.
Но некоторые валидация есть условия использования :if
.
Например, я только требует наличия пароля, если атрибут password_digest
является пустым, так:
validates_presence_of :password, :if => :requires_password?
def requires_password?
password_digest.blank?
end
Дело в том: это обходя состояние, как игнорирование его полностью, НО только при использовании вложенной формы, указанной выше.
Если я тестирую его, используя прямую форму класса Person, он работает, валидации учитывают их условия.
Что происходит?
Я использую Rails 4.1.0.beta1.
Обновление. Просто узнал, что это не связано с проверками, но с тем, что это происходит только в #update. При рендеринге вложенной формы она пытается создать новую, а не обновлять существующую.
Я думаю, что есть недоразумение. Проверка делает WORK, проблема в том, что условие (': if') игнорируется. Вы предполагаете, что 'validate: true' исправит это? Другое дело, класс, который использует 'has_one', является Лицом, но форма другая, это для учетной записи с человеком, вложенным в нее.Другими словами, вложенная форма предназначена для отношения 'own_to'. –