Я использую Authlogic, который по умолчанию ставит несколько валидаций (длина, уникальность, формат и т. Д.) В таких областях, как логин, адрес электронной почты и пароль.Как я могу поместить условную проверку на атрибут ActiveModel, который уже имеет несколько валидаций?
Я бы хотел пропустить все проверки, прикрепленные к одному из атрибутов, если, например, присутствует другой атрибут.
Возможно ли это? Что-то вроде:
validate :email, :unless => :has_openid?
, который затем пропустит проверку формата, длины и уникальности только по атрибуту электронной почты.
Я работаю с 3.1.x приложение и authlogic Rails 3.1.0
Обновление: Я пытался следовать этой статьи, но я не мог заставить его работать правильно: http://erikonrails.snowedin.net/?p=242
true, я могу это сделать, но он связывает его с определенным набором валидаций по этому атрибуту. Например, что, если я добавлю драгоценный камень или добавлю какую-либо другую проверку в поле электронной почты ... Тогда мне нужно было бы также запомнить этот блок ... понимаете, что я имею в виду? –
Это справедливо. Когда вы говорите, что это «не работает», какое поведение вы видите? Он пытается проверить область независимо от того, что? – x1a4
, когда я следил за статьей, спад был неудачным, но не было сообщений об ошибках, которые я нашел очень странными ... Я не слишком глубоко в него заглядывал, и с тех пор я отказался от этого подхода, поэтому я не могу сказать вам точно, что происходило. Я занимался написанием своего собственного модуля, который перебирает все User.validators и добавляет, и если/если опция ..., но я обнаружил, что источник rails замораживает хэш-параметры параметров при инициализации [lib/active_model/validator.rb] (https: //github.com/rails/rails/blob/2e62af310d98fba78f338d916f7c17996446bc40/activemodel/lib/active_model/validator.rb) –