2011-10-06 2 views
0

Я пытаюсь найти контактные линзы, связанные с user_id, но список компаний.Как искать ассоциации, используя Squeel in Rails 3?

@companies_user = Company.joins{contacts}.where{:contact => {user_id => current_user}}.uniq 

То, что я хочу, чтобы искать названия компаний, где есть контакт, который имеет user_id такой же, как CURRENT_USER.

Я не нашел пример ... Раньше я использовал searchlogic, но теперь я в Rails 3 .... спасибо!

ответ

0

Это можно сделать наоборот

@user = User.find(current_user_id) 
@company_names = @user.contacts.map{ |contact| cntact.company.name }.uniq 
+0

Помогает? – Angela

1

год поздно, но, надеюсь, это поможет кому-то еще.

В основном с Squeel вы могли бы сделать что-то вроде этого:

@companies_user = Company.joins{contacts}.where{contacts.user_id == current_user} 

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

@companies_user = Company.joins{contacts}.where{(contacts.user_id == current_user) & (company_name =~ 'Apple')} 
# would translate to 
SELECT ... FROM... 
<join statements>... 
WHERE contacts.user_id = <current_user> AND company.company_name LIKE 'Apple' 

См. this article

Он делает именно это и многое другое.