模型中的自定义验证

时间:2011-04-23 17:08:12

标签: ruby-on-rails model error-handling validation

我需要使用shortcut_url对User模型进行验证以适合正则表达式。

user.shortcut_url[/^[a-z]|[A-Z]*/]

我希望它抛出错误并添加到用户的消息中。我没有事先的研究就想到了这一点并提出了

def validate_shortcut_url
 if self.shortcut_url
  if self.shortcut_url[/^[a-z]|[A-Z]*/] != ""
    return true
  else
    self.errors.full_messages << "Shortcut URL must begin with a letter"
    return false
  end
 end
end

然后把

validate :validate_shortcut_url

在我的模型的顶部。现在。这样做的正确方法是什么?

2 个答案:

答案 0 :(得分:1)

要运行自定义验证,只需致电:

validate :validate_shortcut_url

在模型中。此外,由于您使用的是用户模型,因此无需传入用户 - 您只需使用self中的self.shortcut_url

答案 1 :(得分:1)

这似乎还有很长的路要走 为什么你不会这样做

validates_format_of :validate_shortcut_url, :with => /^[a-z]|[A-Z]*/, :message => "Shortcut URL must begin with a letter"