SORU
27 Mart 2009, Cuma


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
27 Mart 2009, Cuma


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ü

  1. İşlem adı ile yeni bir kullanıcı oluşturmak için bir istek alır'' . foo
  2. B süreç aynı şeyi yapar
  3. Süreç Bir 'foo' DB adı henüz yok diyorsa bu ismi henüz varsa ve. DB sorarak teklik doğrular
  4. Süreç B aynı şeyi yapar ve aynı yanıtı alır
  5. Süreç yeni Bir kayıt için insert deyimi gönderir ve başarılı olur
  6. 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

Ruby on Rails 3rd Edition:

...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.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Derek Banas

    Derek Banas

    12 AĞUSTOS 2008
  • Erica Griffin

    Erica Griffi

    8 HAZİRAN 2009
  • MobileTechReview

    MobileTechRe

    6 HAZİRAN 2008