Auswahl der Datensätze, wo die relation nicht leer ist
Habe ich eine eins-zu-viele-Beziehung zwischen Produkt und "ProductCategory".
Wie kann ich die Abfrage alle productcategories, bei denen mindestens ein Produkt zugeordnet ist?
class Product < ActiveRecord::Base
belongs_to :product_category
end
class ProductCategory < ActiveRecord::Base
has_many :products
end
Du musst angemeldet sein, um einen Kommentar abzugeben.
Fand ich heraus, wie man dieses Problem lösen Dank der großen Ryan Bates auf diesem screencast: http://railscasts.com/episodes/181-include-vs-joins
ProductCategory.includes(:products).where('products.id is not null').all
Verbindet, macht einen inner join, so der where-Klausel in einigen der anderen Antworten ist überflüssig. Gruppierung von Produkten.id wie einige andere tun, wiederholen Sie die Kategorie, wenn die Kategorie hat mehrere Produkte, die Gruppierung nach der "ProductCategory" beseitigen dups.
ProductCategory
wenn es mindestens aufProduct
in es.Einer etwas besser lesbaren Lösung: