ruby - Rails Scope - Get all Products where ProductCategories.size > 0 -
i have simple 3 way model association product
can belong multiple categories
.
product has_many productcategories productcategories belongs_to product productcategories belongs_to category category has_many productcategories
i'm trying create scope returns products
have visible=true
, at least 1 associated productcategories
.
how scope like?
here's i've tried:
scope :visible, -> { where(visible: true).where(product_categories.size > 0) }
try in product.rb:
scope :visible, -> { where(visible: true).joins(:product_categories).uniq }
it should generate sql query:
select distinct products.* products inner bring together product_categories on product_categories.product_id = products.id
or, in english: “return products have @ to the lowest degree 1 product category”. note products multiple product categories show multiple times , hence used uniq
have distinct
query.
ruby-on-rails ruby postgresql model scope
No comments:
Post a Comment