Передача метода validates_format_of - PullRequest
0 голосов
/ 10 мая 2009

Я хочу сделать это:

validates_format_of :email, :with => email_regex

def email_regex
  email_name_regex  = '[A-Z0-9_\.%\+\-]+'
  domain_head_regex = '(?:[A-Z0-9\-]+\.)+'
  domain_tld_regex  = '(?:[A-Z]{2,4}|museum|travel)'
  return /\A#{email_name_regex}@#{domain_head_regex}#{domain_tld_regex}\z/i
end

но я получаю сообщение о том, что мне нужно передать регулярное выражение в метод validates. Я был уверен, что ты можешь сделать что-то подобное. Я пропускаю шаг?

Спасибо

Ответы [ 2 ]

0 голосов
/ 11 мая 2009

Ваш код выглядит нормально. И я предполагаю, что вы определяете метод email_regex до того, как он будет использован методом validates.

Вы должны отладить то, что получает validates_format_of (измените код RoR, чтобы напечатать: с типом аргумента). Это должно быть довольно легко и поможет вам решить проблему.

Теперь я могу только догадываться, что метод email_regex где-то переопределен и возвращает что-то еще, кроме Regexp.

0 голосов
/ 10 мая 2009

А как насчет использования consttant? Это также обеспечит компиляцию регулярного выражения только один раз.

class ...
  FOO_BAR = /#{baz}.../

  validatess ... :with => FOO_BAR

но да, я не уверен, почему твой путь не работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...