Я не знаю, почему я не могу понять это, я думаю, это должно быть довольно просто. У меня есть две модели (см. Ниже). Я пытаюсь придумать названную область действия для SupplierCategory, в которой были бы найдены все категории поставщиков (включая поставщиков), которые являются ассоциированными поставщиками, не пусты.
Я пробовал прямое соединение, named_scope :with_suppliers, :joins => :suppliers
, которое дает мне только категории с поставщиками, но дает мне каждую категорию, указанную отдельно, поэтому, если в категории есть 2 поставщика, я получаю категорию дважды в возвращенном массиве:
В настоящее время я использую:
named_scope :with_suppliers, :include => :suppliers
и затем, на мой взгляд, я использую:
<%= render :partial => 'category', :collection => @categories.find_all{|c| !c.suppliers.empty? } %>
Не совсем красноречиво, но иллюстрирует, чего я пытаюсь достичь.
Определения классов
class SupplierCategory < AR
has_many :suppliers, :order => "name"
end
class Supplier < AR
belongs_to :supplier
end