【发布时间】:2015-08-23 00:52:05
【问题描述】:
我有三个表:projects、technology 和 projects_technologies(项目 ID 与技术 ID 之间的映射)。我有两个模型:项目和技术。项目拥有并属于许多(HABTM)技术,反之亦然。现在我正在尝试获取属于给定项目的技术的所有名称(或活动记录,如果有办法的话)。这是我所做的 SQL 语句,使用 5 作为给定的项目 ID:
SELECT name FROM technologies WHERE id IN (
SELECT projects_technologies.technology_id FROM projects_technologies
WHERE projects_technologies.project_id = 5
);
我可以连接到数据库并运行查询,但由于我已经设置了具有 HABTM 关系的模型,我想知道是否有“Rails 方式”来执行此操作。我一直在查看此文档 http://guides.rubyonrails.org/active_record_querying.html,但我不知道是否以及如何将其应用于此类查询。
更新
原来我只需要这个:
Project.find(5).technologies
【问题讨论】:
-
Technology.joins(:projects).where('projects.id = ? ',5).select('technologies.name')试试这个
标签: ruby-on-rails postgresql join has-and-belongs-to-many