ben

OMÜ , Bilgisayar Mühendisliği, 13'

23 Ağustos 2015 Pazar

Geçerlilik İlkeleri

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

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}

İs= tam uzunluk
İ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}

İ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}

Ş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