Model是用於與DB進行資料交互的物件,為了維護資料的安全及完整,往往需要建立基本的資料驗證,而這樣的需求可以針對在models中的model檔案撰寫Validation,當model的資料進行更動時(例如save)會自動觸發
1、官方列出的trigger時機:
create
create!
save
save!
update
update_attributes
update_attributes!
2、跳過驗證
decrement!
decrement_counter
increment!
increment_counter
toggle!
update_all
update_attribute
update_counters
或者,當你在save時不希望驗證也可以傳送false值的方式讓它不要觸發save(false)
3、可使用的method
(1) valid?
觸發驗證,若沒有errors時會傳回true
(2) invalid?
與(1)相反
(3) new_record?
在丟入DB前,確認該資料是否已經存在,若已經存在會傳回false
4、驗證的方式
(1) 驗證必填 - validates_presence_of
範例:username及password須為必填
validates_presence_of :username, :password
(2) 驗證長度 - validates_length_of
範例:username必須大於8個字元
validates_length_of :username, minimum=>8
(3) 自訂驗證:
validate :validation_name #表示採用這個自訂的function去驗證
private #將function設定在private下
def validation_name
if age < 0
errors.add(:age, ".......")
elsif age>999
errors.add(:age, ".......")
end
(4) 其他
* 參考資料
https://guides.rubyonrails.org/v2.3/activerecord_validations_callbacks.html
沒有留言:
張貼留言