Şu an kaydedilen bir kaydedilenin belirli bir kapsam içine düşüp düşmediğini kontrol etmeye çalışıyorum. Bu 'kapsam' gerçekten bir arama için sadece bazı kaydedilmiş argümanlar. Ayrıca, bu 'kapsam' ile, yalnızca nesnenin değerlerini kontrol ediyorum, veritabanındaki diğer nesnelerle nasıl bir ilişki kurduğunu hiç bilmiyorum, bu yüzden eğer mantıklı olursa veritabanını sorgulamak her zaman öldürülür.Belirli Bir Etkin Kayıt Nesnesinin Özel Bir Kapsam İçinde Olup Olmadığını Kontrol Etme
Ben yalnızca aşağıda çözümü
begin
result = self.class.where(scope).find(self.id)
rescue
result = false
end
bununla sorunu Zaten kayıt var olsa bile veritabanını sorgulamak zorunda olduğunu
ile gelip mümkün olmuştur ve bu değil koşmak zorunda Sadece kaydetmeden önce ama kaydedilen değerlerin kontrol edilmesi için kaydedildikten sonra kaydedildi ve kaydedildikten sonra kaydedilecek olan değerler, eğer kayıtlı değilse güncellenmiş versiyon için veritabanını sorgulamanın bir yolu yoktur.
Bu denetimler bir dizi olabilir, bu yüzden iki kez yapmak zorunda kalmamak ve aynı zamanda veritabanını sorgulamak zorunda kalmak istiyorum, sonuçta ben sadece bir şey kimliği ile bakıyorum bile.
Düşünebildiğim tek diğer çözüm, bir nesneyi geçtiği zaman bir boole döndüren bir proc aramasının nasıl yapılacağını çeviren bir yönteme sahip olmaktı. Bununla ilgili tek sorun, bir kısmının, kendi başına bir proje gibi görünen, kullanılan aktif kayıt bağdaştırıcısıyla nasıl çalışması gerektiğidir. Peki, bunu yapmanın bir yolu ya da yardım edebilecek bir gemiyi bilen var mı?
PS Önbellekten 'kapsamı' alıyorum, böylece bir proc olarak kaydedemiyorum çünkü proksları Rails ile önbelleğe koyamazsınız. senin nesne nitelikleri kapsamı değerlerini varsa veritabanını kontrol etmek istemiyorsanız
Kaydetmekte olduğunuz kaydın somut bir örneğini, kapsam koşullarının neye benzediğini ve neden bunu yapmaya çalıştığınızı belirtmeniz yararlı olabilir. Tam olarak yapmaya çalıştığınız şey hakkında daha iyi bir yol olabilir. – deefour
Kayıt, herhangi bir şey olabilir ve bu nedenle, veritabanında başka bir şeyle karşılaştırmayı gerektirmediği sürece, yeniden yapılandırılabilir olması gerekmedikçe yeniden kullanılabilir. Bir önbellekleme sistemi için olsa da. Dolayısıyla, kayıttan önceki veya sonraki kayıt, önbelleğin silinmesi için önbelleğin 'kapsamına' giriyorsa. Önbelleğe almak istediğiniz gerçekten karmaşık sayfalar içindir, ancak güncellenmiş kayıt önbelleğin bir parçası olmadıkça zaman kaybetmek istemez. – rovermicrover
aynı soru burada: http://stackoverflow.com/questions/1255815/check-if-model-instance-falls-within-named-scope-in-rails – voondo