Rails HABTM:Select 记录的所有内容 'has'
Rails HABTM: Select everything a that a record 'has'
我有三个表:项目、技术和 projects_technologies(来自项目 ID to/from 技术 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 way" 来执行这个。我一直在查看此文档,http://guides.rubyonrails.org/active_record_querying.html,但我不知道是否以及如何将其应用于此类查询。
更新
原来我需要的是这个:
Project.find(5).technologies
等效的活动记录查询是
Technology.select('name').where("id IN (?)", ProjectTechnology.where("project_id = ?", 5).pluck(:technology_id))
希望对您有所帮助!
我有三个表:项目、技术和 projects_technologies(来自项目 ID to/from 技术 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 way" 来执行这个。我一直在查看此文档,http://guides.rubyonrails.org/active_record_querying.html,但我不知道是否以及如何将其应用于此类查询。
更新
原来我需要的是这个:
Project.find(5).technologies
等效的活动记录查询是
Technology.select('name').where("id IN (?)", ProjectTechnology.where("project_id = ?", 5).pluck(:technology_id))
希望对您有所帮助!