Bir has_many'den benzersiz kayıtları Rails3'teki ilişki aracılığıyla görüntülemenin en iyi yolunun ne olduğunu merak ediyorum.
Üç modelim var:
class User < ActiveRecord::Base
has_many :orders
has_many :products, :through => :orders
end
class Products < ActiveRecord::Base
has_many :orders
has_many :users, :through => :orders
end
class Order < ActiveRecord::Base
belongs_to :user, :counter_cache => true
belongs_to :product, :counter_cache => true
end
Diyelim ki bir müşterinin sipariş ettiği tüm ürünleri gösteri sayfasında listelemek istiyorum.
Bazı ürünleri birden çok kez sipariş etmiş olabilirler, bu nedenle sipariş sayısına bağlı olarak azalan sırada görüntülemek için counter_cache kullanıyorum.
Ancak, bir ürünü birden çok kez sipariş etmişlerse, her ürünün yalnızca bir kez listelendiğinden emin olmam gerekir.
@products = @user.products.ranked(:limit => 10).uniq!
bir ürün için birden fazla sipariş kaydı olduğunda çalışır, ancak bir ürün yalnızca bir kez sipariş edilmişse bir hata oluşturur. (sıralama, başka yerde tanımlanan özel sıralama işlevidir)
Diğer bir alternatif ise:
@products = @user.products.ranked(:limit => 10, :select => "DISTINCT(ID)")
Burada doğru yaklaşımda olduğuma emin değilim.
Bununla başka kimse uğraştı mı? Hangi sorunlarla karşılaştınız? .Unique! Arasındaki fark hakkında daha fazla bilgiyi nerede bulabilirim! ve DISTINCT ()?
Bir has_many aracılığıyla ilişki yoluyla benzersiz kayıtların bir listesini oluşturmanın en iyi yolu nedir?
Teşekkürler