2010-05-30 3 views
0

У меня есть две модели, Worker и Project, и они связаны с has_many посредством ассоциации.Поиск записей при использовании has_many через ассоциации

мне удалось найти все проекты, которые связаны с конкретным работником, написав следующий код:

worker=Worker.find_by_id("some_id") 
worker.projects 

, но я хочу, чтобы проекты, которые я получаю, чтобы быть только активные проекты (в модели проекта I есть поле статуса)

Я пытался сделать что-то вроде

worker.projects(:status_id=>'active') 

, но он не работает для меня.

Может ли кто-нибудь сказать мне, как я могу это сделать?

+0

@piemesons: Я могу представить, что эта конкретная точка синтаксиса будет трудно просто найти в документации там, где это необходимо. Трудность только усугубляется тем фактом, что эта связь использует утиную печать, что почти удивительно, что существует метод '# all'. – Matchu

ответ

1

Try:

worker.projects.all(:conditions => {:status_id => 'active'}) 
1
worker.projects.all(:conditions => {:status_id => 'active'}) 

будет работать. (ответ отредактирован после комментария)

+1

Они, по сути, ведут себя по-другому. '# find' выдает исключение при ошибке, тогда как' # find_by_id' возвращает nil при ошибке. – Matchu

+0

Oh thanks Matchu .. редактирование моего ответа ... –

Смежные вопросы