0
Model düzeyinde teklik kısıtlaması var ve MySQL düzeyine aynı şekilde taşınmam gerekiyor. Aynı şeyi yapmak için SQL deyimi nedir.Koşullu Teklik Kısıtlaması Ruby on raylar
class Blog < ActiveRecord::Base
validate :uniqness_of_title
def uniqness_of_title
blog = Blog.where("title=? and lock_version<>-1", self.title).last
self.errors.add :base, "Title already exists." if blog
end
end
ve O başlık zaten rekor lock_version sahip var olsa dahi 'bloglar' tabloya giriş yapmak için izin vermelidir = -1.
Lock_version sütununu da doğrulamam gerekiyor. Blog başlığı lock_version = -1 ile mevcut olsaydı. Giriş yapabilmeli. –
Bunu mysql kısıtlamaları ile yapabileceğinizi sanmıyorum (http://stackoverflow.com/questions/987099/unique-constraint-with-conditions-in-mysql adresinde bulunan görüşler). Şahsen, modelde bu gibi iş mantığı koşullarını bırakırdım. – born4new
@ born4new Benzersizlik sadece * veritabanı tarafından garanti edilebilir. 3 Rails uygulama sunucunuz varsa, aynı anda 3 model düzeyinde kontrol gerçekleştirebilir, bunların hiçbiri bu başlık ile mevcut bulunamaz ve hepsinin yeni bir tane oluşturabilir. Bunu MySQL ile en iyi şekilde yapmak başka bir soru. –