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

发布于 2024-12-08 19:19:44 字数 274 浏览 1 评论 0原文

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

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

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

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

I am trying to search through the model contacts associated by user_id but list the companies.

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

What I want is to search for the names of companies where there is a contact that has a user_id the same as current_user.

I haven't found an example...I used to use searchlogic, but am now in Rails 3....thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

何以笙箫默 2024-12-15 19:19:44

晚了一年,但希望对其他人有帮助。

基本上使用 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'

请参阅 这篇文章

它确实做到了这一点,甚至更多。

A year late, but hopefully it will help someone else.

Basically with Squeel you would do something like this:

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

You can take it even further and search for both something inside the joined table and the table you are querying:

@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'

See this article

It does exactly that and more.

旧情勿念 2024-12-15 19:19:44

反之亦然也可以

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

It can be done vice versa

@user = User.find( current_user_id )
@company_names = @user.contacts.map{ |contact| cntact.company.name }.uniq
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文