Activerecord присоединиться к поиску - PullRequest
0 голосов
/ 17 апреля 2010

У меня есть две модели:

class Category 
 has many :jobs
end

class Job
 belongs_to :category
end

Так что я точно могу сделать

c = Category.first
c.jobs 

У меня вопрос: как мне найти категории, в которых есть хотя бы одна работа?

Я просто забыл добавить сегодня, я выполняю это как:

Category.find(:all).collect { |x| x if x.jobs.size > 0 }

это работает, но я совершенно уверен, что это не оптимально.

1 Ответ

1 голос
/ 17 апреля 2010
Category.find(:all, :joins => :jobs, :group => :id)

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...