如何在Rails 3中使用Squeel搜索关联?

时间:2011-10-06 03:38:41

标签: ruby-on-rails-3 associations squeel

我正在尝试搜索user_id关联的模型联系人,但列出公司。

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

我想要的是搜索有一个user_id与current_user相同的联系人的公司名称。

我还没有找到一个例子......我曾经使用过searchlogic,但现在我正在使用Rails 3 ....谢谢!

2 个答案:

答案 0 :(得分: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

确实如此,以及更多。

答案 1 :(得分:0)

反之亦然

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