Как мне искать ассоциации с помощью Squeel в Rails 3? - PullRequest
0 голосов
/ 06 октября 2011

Я пытаюсь найти модель контактов, связанных с user_id, но перечислю компании.

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

Я хочу найти названия компаний, в которых есть контакт с идентификатором user_id, совпадающим с current_user.

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

Ответы [ 2 ]

1 голос
/ 17 октября 2012

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

В основном со 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'

См. эту статью

Он делает именно это и даже больше.

0 голосов
/ 06 октября 2011

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

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