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 に答える