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