Rails:如果存在值,如何验证格式?

时间:2012-01-06 19:26:53

标签: ruby-on-rails ruby-on-rails-3 validation

我想验证表单值的格式,允许空值或需要特定格式。

要根据格式验证值,这样可以正常工作:

validates :application_bundle_identifier, :format => {
  :with => /^[a-zA-Z0-9.-]+$/,
  :message => "A bundle identifier should contain only alphanumeric (A-Z,a-z,0-9), hyphen (-), and period (.) characters."
}

现在,我想允许用户根本不输入值。在这种情况下,我可以将正则表达式调整为^[a-zA-Z0-9.-]*$,但这似乎不是一个非常好的Rails方式。根据格式,可能无法实现,或至少不太清楚。

在这种情况下,最佳做法是什么?

2 个答案:

答案 0 :(得分:60)

当属性为空/空/零时,您可以使用选项:allow_blank => true跳过验证。

答案 1 :(得分:-3)

添加unless nil? || blank?,如果它是空的(空),则应跳过验证,或者我认为是零。

请参阅this page上的最后一个代码示例。