2018年9月9日 星期日

[RoR] Model - Validation


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





沒有留言:

張貼留言