Nasıl ilişki yoluyla bir has_many benzersiz kayıtları görüntülemek için?
Rails3 içinde has_many, üzerinden bir ilişki benzersiz kayıtları görüntülemek için en iyi yolu nedir merak ediyorum.
Üç model 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
Tüm ürünleri bir müşteri listesini istiyorum diyelim Haritayı kendi sayfasında emretti.
Bazı ürünler birden fazla kez sipariş etmiş olabilirler, emir sayısına göre azalan sıralı olarak görüntülemek için counter_cache kullanıyorum.
Ama, eğer bir ürün birden çok kez sipariş varsa, her bir ürün sadece bir kez listelenir emin olmak istiyorum.
@products = @user.products.ranked(:limit => 10).uniq!
birden fazla var çalışır bir ürün için Sipariş kayıtları, ama eğer bir ürün sadece bir kez sipariş edilmiştir eğer bir hata oluşturur. (sırada özel bir sıralama işlevi başka bir yerde tanımlanır)
Başka bir alternatif
@products = @user.products.ranked(:limit => 10, :select => "DISTINCT(ID)")
Doğru bir yaklaşım için buradayım emin değilim.
Herkesten bu ele mi? Ne sorunları karşı geldi? Nerede arasındaki fark hakkında daha fazla bilgi bulabilirim .benzersiz! () FARKLI?
Has_many, üzerinden bir ilişki ile benzersiz kayıtların bir listesini oluşturmak için en iyi yolu nedir?
Teşekkürler
CEVAP
Belirtmek için denediniz mi :has_many Derneği seçeneği özgün:
has_many :products, :through => :orders, :uniq => true
:uniq
Eğer doğruysa, çiftleri toplama görünmeyecektir. Birlikte yararlı olan :.
RAYLAR İÇİN GÜNCELLEME 4:
Raylar 4 has_many :products, :through => :orders, :uniq => true
önerilmiyor. Bunun yerine, şimdi has_many :products, -> { distinct }, through: :orders
yazmanız gerekmektedir. Daha fazla bilgi için distinct section for has_many: :through relationships on the ActiveRecord Associations documentation bkz. Kurt sayesinde zleri bu işaret için Mueller.
Nasıl görüntülemek için PHP Hataları a...
Nasıl TextView içinde HTML görüntüleme...
nasıl android Uyarı İletişim kutusunu ...
Nasıl daha az (gnu) satır numaralarını...
Nasıl durum çubuğunun altında ActionBa...