Проверка динамической модели - PullRequest
2 голосов
/ 04 января 2011

Я хочу создать некоторые проверки для одной из моих моделей, которые содержат информацию о местоположении (улица, местность, почтовый индекс и т. Д.).Я хочу иметь возможность изменять правила проверки в зависимости от выбранной страны.

Например, правила проверки для postal_code будут разными для США и Канады.Кроме того, в некоторых странах нет postal_codes, поэтому не требуется никаких правил проверки.

Как мне реализовать что-то подобное?

Ответы [ 2 ]

6 голосов
/ 04 января 2011

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

validate :location_should_be_valid

def location_should_be_valid

  # run all your custom logic here

  # if it isn't valid, add an error indicating why
  if country == "Canada"
    errors.add(:postal_code, "Invalid postal code for Canada") if postal_code.length != 7
  end
end

Подробнее об этом читайте в Руководствах по Rails:
http://guides.rubyonrails.org/active_record_validations_callbacks.html#creating-custom-validation-methods

1 голос
/ 22 августа 2012
validates :postal_code, :presence => true, :if => :check_country

def check_country
  ["US", "Canada"].include?(self.country)
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...