Raylar "validates_uniqueness_of" büyük / küçük Harf Duyarlılığı
Burada modeli (SQLLite3 kullanıyorum):
class School < ActiveRecord::Base
validates_uniqueness_of :name
end
Ben ekledikten sonra örneğin, "Yale", ekleme yapamam "Yale" amaolabilir"yale." Ekle Nasıl doğrulama büyük / küçük harf duyarlı hale getirebilir miyim?
EDİT: - Active Record Validations Bulundu
CEVAP
validates_uniqueness_of :name, :case_sensitive => false
hile yapar, ama validates_uniqueness_of
bu akılda tutmak gerekirdeğilgarantisi varsa sunucu işlemleri (örneğin Phusion Yolcu, birden fazla Melez çalışan, vb.)/birden fazla sunucu veya bir çok iş parçacıklı sunucu varsa teklik. Olayların bu sıra (sırası önemlidir) alabilirsiniz çünkü
- İşlem adı ile yeni bir kullanıcı oluşturmak için bir istek alır'' . foo
- B süreç aynı şeyi yapar
- Süreç Bir 'foo' DB adı henüz yok diyorsa bu ismi henüz varsa ve. DB sorarak teklik doğrular
- Süreç B aynı şeyi yapar ve aynı yanıtı alır
- Süreç yeni Bir kayıt için
insert
deyimi gönderir ve başarılı olur - Eğer veritabanı kısıtlaması teklik alanın gerektiren varsa, Süreç B yeni kayıt için
insert
deyimi sunacakbaşarısızçirkin server bir özel durum ile bu SQL bağdaştırıcısı geri geliyor. Veritabanı kısıtlaması yok, ekleme başarılı olur ve artık 'foo' adı olarak. iki satır varsa
Ayrıca" validates_uniqueness_of
Raylar belgelerinde. "Eşzamanlılık ve bütünlüğünü görmek
...adını, validates_uniqueness_of gerçekten sütun değerleri benzersiz olacağını garanti etmez rağmen. Tüm sütun kayıt doğrulama işlemi zaman doğrulanan bu aynı değere sahip olduğunu doğrulayın. İki kayıt hem kayıt doğrulama için benzersiz olmalı, bir sütun için aynı değeri her ile aynı saatte oluşturulmuş olması mümkündür. Benzersizlik için en güvenilir yolu veritabanı düzey bir kısıtlama ile."
Ayrıca validates_uniqueness_of
this programmer's experience bkz.
Sık oluyor bu şekilde yeni bir hesap açarken web sayfasından çift sunumları tesadüfi değildir. Bu kullanıcı geri alacak ne (çirkin) ikinci hata olduğunu ve onların kaydı başarısız oldu sanırım yapacak çünkü, gerçekte başardı ne zaman çözmek için de hiç kolay değil. Bunu önlemek için bulduğum en iyi yolu sadece javascript çift gönderme önlemek için denemek için kullanmaktır.
PostgreSQL: Nasıl "büyük / küçük ...
Büyük / küçük harf duyarlı Raylar aram...
`yeni fonksiyon()` JavaScript küçük ha...
varsayılan " dpi değeri;büyük"...
Git içinde büyük / küçük harf duyarlıl...