#validation #ruby-on-rails-4
#проверка #ruby-on-rails-4
Вопрос:
Используемый валидатор:
validates :address, :allow_nil => true, :allow_blank => true,
uniqueness: {
scope: :some_id,
message: Proc.new { GenerateCustomMessage },
strict: SomeException
},
:format => {
:with => proc { |a| Regexp.new(regexp_here) },
:message => proc { |a| "why 'a' is nil but not my object ?" },
strict: FormatIsInvalid
}
В format validator я не могу получить контекст объекта (a). Как я могу его получить?
Ответ №1:
Я только что добавил пользовательский валидатор
validates :address, :allow_nil => true, :allow_blank => true,
uniqueness: {
scope: :some_id,
message: Proc.new { GenerateCustomMessage },
strict: SomeException
}
validate :validate_address
def validate_address
regex = Regexp.new(regexp_here)
unless address.blank?
unless address =~ regex
message = generate_dynamic_message
errors.add(:address, message)
end
end
end