2012-08-26 81 views
1

這是我的模型:驗證在軌語法3

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

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

的Rails教程示例的作者說:「經過哈希作爲方法最後一個參數時大括號是可選的」,但這裏的presence驗證不是最終的參數,但它可以不帶花括號並且是有效的代碼。電子郵件屬性的驗證format也適用。
有人可以解釋我爲什麼?

回答

2

:name, :presence: true, length: { maximum: 50 }最後一個參數傳遞給validates,所以你不需要大括號。

的情況下,你會需要花括號是,如果你以後散列傳遞參數

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

哪裏some_other_argument這裏是散列後自帶一些假設的說法。爲了正確地處理這個問題,你需要在哈希周圍使用大括號。

+0

謝謝,你讓我清楚這一點。 – Thanh

+0

不客氣!如果您認爲它回答了您的問題,請將其標記爲答案:) –