Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/54.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 传递方法以验证的\u格式\u_Ruby On Rails - Fatal编程技术网

Ruby on rails 传递方法以验证的\u格式\u

Ruby on rails 传递方法以验证的\u格式\u,ruby-on-rails,Ruby On Rails,我想这样做: 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}@#{do

我想这样做:

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方法。我相信你能做这样的事。 我漏了一步吗


谢谢

用contstant怎么样?这还将确保regexp只编译一次

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

  validatess ... :with => FOO_BAR

但是,是的,我不知道为什么你的方式不起作用。

你的代码看起来不错。我猜在validates方法使用之前,您定义了
email\u regex
方法

您必须调试
验证
获取的格式(修改RoR代码以打印:with参数类型)。这应该很容易,并帮助您解决问题

现在我只能猜测,
email\u regex
方法是在某个地方重新定义的,返回的不是Regexp