Наиболее эффективный способ сделать это - добавить столбец кэша счетчика в Item
class Item
# items must have a column named companies_count
has_many :companies, :counter_cache => true
scope :with_companies, where('companies_count>0')
end
Существуют и другие способы, например, выполнение подзапросов или объединение и группирование и подсчет.* Важно то, что все, что вы пишете в where
, будет выполняться в базе данных, поэтому оно ограничено тем, что может делать SQL.