1

这是我的模型:

class User < ActiveRecord::Base
  attr_accessible :email, :name

  validates :name, presence: true, length: { maximum: 50 }
  VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i
  validates :email, presence: true, format: { with: VALID_EMAIL_REGEX },
                uniqueness: true
end

Rails 教程示例的作者说“在方法中传递哈希作为最终参数时,花括号是可选的”,但这里的presence验证不是最终参数,但可以不使用花括号,并且是有效代码。电子邮件属性的format验证也有效。
任何人都可以解释我为什么?

4

1 回答 1

2

:name, :presence: true, length: { maximum: 50 } 传递给的最后一个参数validates,所以你不需要花括号。

如果您在该哈希之后传递参数,需要大括号的情况是:

validates { :name, presence: true, length: { maximum: 50 } }, some_other_argument

这是散列之后some_other_argument的一些假设论点。要正确处理此问题,您需要在散列周围使用花括号。

于 2012-08-26T06:19:46.093 回答