2016-09-28 3 views
0

У меня есть 2 модели; Категория и продукты, и я хочу вернуть список всех категорий, у которых есть хотя бы один продукт, присвоенный им.Rails 5 - возвращает записи с подсчетом ассоциации> 0 - PSQL/ActiveRecord

# app/models/category.rb 
has_many :product_categories 
has_many :products, through: :product_categories 

продукты также установить с ассоциациями через присоединиться к таблице и категории продукта устанавливается с belongs_to как для продукта и категории.

Я просто пытаюсь создать помощника, чтобы перечислить категории и хочу только вернуть те, у которых есть продукты.

def category_list 
    # Return categories here with at least 1 product 
end 
+0

'Category.joins (: product_categories)' должен предоставить вам список всех категорий, по крайней мере, с 1 'product_category'. – jvnill

ответ

1

Используйте counter_cache на Category, сброс счетчиков модели, а затем вы можете запросить Category.where('product_count > ?', 0).

+0

Спасибо, отлично работал. – user6891203