Вызов проверки из другой пользовательской проверки - PullRequest
1 голос
/ 14 февраля 2020

Я хочу иметь два разных пользовательских валидатора, но хотел бы, чтобы один из валидаторов ссылался на другой:

class URLFormatValidator < ActiveModel::EachValidator
  def validate_each(record, attribute, value)
    # ... validates the format of a URL is correct
  end    
end

class URLReachableValidator < ActiveModel::EachValidator
  def validate_each(record, attribute, value)
    # ... validates the URL is reachable
  end    
end

Как я могу ссылаться на URLFormatValidator в URLReachableValidator?

1 Ответ

0 голосов
/ 15 февраля 2020
class URLReachableValidator < ActiveModel::EachValidator
  def validate_each(record, attribute, value)
    format_validator = URLFormatValidator.new
    format_validator.validate_each(record, attribute, value)
  end    
end

Но я бы просто использовал наследование или дополнение для совместного использования функциональности.

class URLValidator < ActiveModel::EachValidator
  # shared funtionality ...
end

class URLFormatValidator < URLValidator 
  def validate_each(record, attribute, value)
    # ...
  end    
end

class URLReachableValidator < URLValidator 
  def validate_each(record, attribute, value)
    # ...
  end    
end
...