2015-06-02 111 views
0

我有這個基本的驗證在我的模型:軌道4模型格式和散列(很基本的)

validates :student_number, :presence => true, 
        :length => { :maximum => 255 }, 
        :uniqueness => true 

那麼,什麼是所有?這是我最好的猜測,如果你願意告訴我我錯了什麼,我會很感激。

validates是一種方法。我發送它的符號:first_name,然後:presence => true,這是一個密鑰:presencetrue作爲一個值的散列?

除非它看起來不像散列,至少不是根據docs

然後:length => { :maximum => 255 }:presence => true是同一種實體(散列?),但它期望另一個散列作爲參數?

感謝您的任何幫助。

回答

1

Ruby允許你放棄圓括號和括號,如果它可以推斷自己的位置;你的情況,你可以重寫代碼:

validates(:student_number, { :presence => true, 
          :length => { :maximum => 255 }, 
          :uniqueness => true }) 

這是一個方法調用,通過它來驗證的屬性,這是驗證選項,哈希第二個參數的第一參數。

注意:這個解釋有點簡化,驗證實際上在處理它的參數方面有點複雜。請參閱here以瞭解有關如何正確工作的更多詳細信息。

+0

是。這很有道理。謝謝! – crowhill

+1

澄清,只有一個哈希,總共有兩個參數。 (@crowhill似乎不清楚':presence'和':length'是否是同一個哈希或單獨哈希的組成部分;我已經稍微編輯了這個答案的格式,以便更清楚。) –

0

接近但不夠接近。所有:presence => true, :length => { :maximum => 255 }, :uniqueness => true是一個散列,其中有三個鍵presence, length, uniqueness和三個相應的值。事實上,它與你寫 { :presence => true, :length => { :maximum => 255 }, :uniqueness => true }相同,但第一種方法更短