activerecord validations 是rails很方便的一項特性,由於它如此好用,我們經常使用它,讓使用者看著了不舒服的資訊,比如下面所說的例子:
舉個例子,比如現在我要在使用者註冊的時候驗證 social security number (ssn) ,一般**會是這個樣子的:
ruby**
class user
validates_presence_of :ssn
validates_length_of :ssn, :is => 9
validates_numericality_of :ssn
validates_uniqueness_of :ssn
validates_as_ssn :ssn
# checks if a reserved or special ssn was sent
end
根據以上的配置,如果使用者忘記填入ssn,那個頁面上會顯示4個錯誤提示資訊:
問題是,使用者只是沒有填入ssn,我們應該只顯示一條不為空的資訊啊,為什麼要將其它的不相關的資訊也顯示出來嚇著了使用者呢?
解決這個問題的方法很簡單,我們可以使用:allow_blank 選項,因此那其它的驗證在ssn號為空的時候是不空觸發的:
ruby**
class user
validates_presence_of :ssn
validates_length_of :ssn, :is => 11, :allow_blank => true
validates_numericality_of :ssn, :allow_blank => true
validates_uniqueness_of :ssn, :allow_blank => true
validates_as_cpf :ssn, :allow_blank => true
end
還可以使用rails框架給object新增的object#with_options
這個方法:
ruby**
class user
validates_presence_of :ssn
with_options :allow_blank => true
do |v|
v.validates_length_of :ssn, :is => 11
v.validates_numericality_of :ssn
v.validates_uniqueness_of :ssn
v.validates_as_cpf :ssn
endend
這以上舉的只是乙個例子,還有如 validates_confirmation_of :password ,
只有在確認密碼不為空的時候才驗證confirmation
不要讓你的程式死掉
前陣子在csdn上看到乙個帖子 論程式的成長 你寫的 有生命力嗎?感觸良多。加上實習到現在已經可以說是整整的工作3年了,其中做了一些專案也發現了一些共性。自己也寫了一些通用的 塊,但是種種原因,沒有一直堅持的維護下去,讓它們不斷的完善 公升級。也就漸漸的失去了生命力,能發揮的作用也越來越小。一直都在...
不要讓經驗禁錮你的程式設計思維
最近我正在讀do more faster這篇文章,雖然此文好像有點是在為techstars的建立做宣傳,但是還是不失為一篇好文。最讓我印象深刻的是,有些明明已經有了成功的條件,至少創業資金是不缺的,但是事到臨頭,卻不知道該如何著手去程式設計。學會程式設計,他們就能夠實現自己的想法,學以致用了。打個比...
不要讓經驗禁錮你的程式設計思想
最近我正在讀do more faster這篇文章,雖然此文好像有點是在為techstars的建立做宣傳,但是還是不失為一篇好文。最讓我印象深刻的是,有些明明已經有了成功的條件,至少創業資金是不缺的,但是事到臨頭,卻不知道該如何著手去程式設計。學會程式設計,他們就能夠實現自己的想法,學以致用了。打個比...