Geçerlilik İlkeleri
Save, save!, create,create!,update, update! metotları çağrıldığında otomatik devreye giren, geçerlilik ilkelerine aykırı durum varsa kaydın veri tabanını etkilemesini engeller.
Kayıt koşullara uygunmu?
araba.valid?
Kayıt uygunsa true değilse false
araba.invalid?
Kayıt uygunsa false değilse true
Geçerlilik kontrolünü devre dışı bırakma
Araba.save(validate: false)
Geçerlilik ilkelerini tanımlama
Modeller içinde tanımlanır
Class Car< ActiveRecord::Base
validates:sütun1,sütun2, yardımci method
end
validates:sütun1,sütun2, yardımci method
end
presence
Alanın boş bırakılmasını engeller
Validates :make , presence:true
absence
Alan değerinin veritabanındaki değerinin kesinlikle değişmemesi istendiğinde kullanılır
Validates :email , absence: true, on: :update
uniqueness
Tablodaki bir sutundaki kayıtların benzersiz olması durumunda kullanılır
Validates :tc_no , uniqueness: true
Küçük/büyük harf duyarlılığı:
Validates :email , uniqueness: {case_sensitive}
length
Alana ait verinin istenilen uzunlukta girilmesini sağlamak için kullanılır.
Validates :name , length:{maximum: 10}
Validates :name , length:{minumum: 3}
Validates :name , length:{in 3..10}
Validates :tc_no , length:{is 11}
Validates :name , length:{minumum: 3}
Validates :name , length:{in 3..10}
Validates :tc_no , length:{is 11}
İs= tam uzunluk
İn= maximum ve minumum aralıklar
İn= maximum ve minumum aralıklar
Numericality
Alana eklenecek olan verinin sadece numeric değer alması istendiğinde kullanılır
Sadece sayı olsun
Validates :tc_no , numericality:{only_integer: true}
10 dan guyuk olsun
Validates :tc_no , numericality:{greater_than: 10}
10 a eşit yada buyuk olsun
Validates :tc_no , numericality:{greater_than_or_equal_to: 10}
10 dan küçük olsun
Validates :tc_no , numericality:{less_than: 10}
10 dan küçük veya eşit olsun
Validates :tc_no , numericality:{less_than_or_equal_to: 10}
10 sayısına tam eşit olsun
Validates :tc_no , numericality:{equal_to: 10}
Girilen sayı sadece çift olsun
Validates :tc_no , numericality:{even: true}
Girilen sayı sadece tek olsun
Validates :tc_no , numericality:{odd: true}
Validates :tc_no , numericality:{equal_to: 10}
Girilen sayı sadece çift olsun
Validates :tc_no , numericality:{even: true}
Girilen sayı sadece tek olsun
Validates :tc_no , numericality:{odd: true}
İnclusion/exclusion
Belirli aralıkta değer girilmesi yada girilmemesi
Validates :year , inclusion:{in: 1990..Time.now.year}
Validates :year , exclusion{in: 1990..Time.now.year}
Validates :year , exclusion{in: 1990..Time.now.year}
Şart sağlamıyorsa nil eklensin
Validates :year , exclusion{in: 1990..Time.now.year},allow_nil:true
Şart sağlamıyorsa boş metin yada boş dizi eklensin
allow_blank:true
acceptance
Formu göndermeden önce kullanıcıdan onay istenmesi durumunda kullanılır, default olarak onay:1 , onaysız:0 olarak atanır
Validates :accept , acceptance: true
Onay durumuna ‘evet ‘ atanması
Validates :accept , acceptance: {accept: ‘evet’}
confirmation
Kullanıcıdan aynı bilgiyi tekrar girmesi istendiğinde kullanılır
Validates :email , confirmation:true
Validates :email_confirmation, presence: true
Validates :email_confirmation, presence: true