Farklı kayıtları seçtiğim bir sorgudan bazı sonuçları sıralamak için Kaminari kullanıyorum.ActiveRecord'ı farklı olarak saymaya zorlayarak (Kaminari ile)
@things = Thing.joins... # create a complex query that produces duplicate results
# I want to select distinct results: this produces the correct results
@things = @things.select("DISTINCT things.*")
# when Kaminari calls count, it will run "SELECT COUNT(*)", instead of
# "SELECT COUNT(DISTINCT things.*)" we will get the wrong count and extra pages
@things = @things.page(params[:page]).per(10)
Ben Kaminari geliştiricisi tarafından reddedildi this pull request, olduğu gibi count
için :distinct => true
geçmektir düşünebildiğim en iyi çözüm: Aşağıdaki kontroller kodu göz önünde bulundurun. This SO question temel sorunu ele almaktadır. This line of code, count
'a giden çağrıdır.
Kaminari'ye Kaminari yamasını içermeyen doğru sayım sağlayacak herhangi bir geçici çözüm var mı? Teşekkürler.
GÜNCELLEME: "sayılan" olarak adlandırılan bir kapsam kullanılması
- harika bir öneri ancak bir ActiveRecord :: İlişki çağrıldığında çalışmaz. Model sınıfıma çağrıldığında işe yarıyor ama bu işe yaramıyor.
Bunun bir yorumdan fazlası olması gerekiyor mu? – apneadiving
Evet, eğer OP, Model üzerinde bir kapsam tanımlasaydı ve saydığı isim ise, modelden bir sayı elde etmeye çalıştığında kütüphanenin ne yaptığını kontrol edebilirdi. – LeakyBucket
detay vermeye devam ediyor ve bu tamam olabilir: cevapların açık olması gerekiyor. Aksi halde yorum olarak ipuçları verin. – apneadiving