我有三个表:项目,技术和projects_technologies(从项目ID到/从技术ID的映射)。我有两个模型:项目和技术。项目拥有并属于许多(HABTM)技术,反之亦然。现在,我试图获取属于给定项目的所有技术名称(或活动记录,如果有这样的方法)。这是我所做的SQL语句,使用5作为给定的项目ID:
public class DBService extends IntentService {
@Override
public void onHandleIntent(Intent intent) {
if (intent.getAction() == "com.tac.save_notification") {
//parse your json here...
DBHelper.save(...);
}
}
}
我可以连接到数据库并运行查询,但由于我已经设置了HABTM关系的模型,我想知道是否有" Rails方式"执行这个。我一直在查看此文档http://guides.rubyonrails.org/active_record_querying.html,但我无法弄清楚是否以及如何将其应用于此类查询。
更新
原来我所需要的就是:
SELECT name FROM technologies WHERE id IN (
SELECT projects_technologies.technology_id FROM projects_technologies
WHERE projects_technologies.project_id = 5
);
答案 0 :(得分:1)
等效的有效记录查询将是
Technology.select('name').where("id IN (?)", ProjectTechnology.where("project_id = ?", 5).pluck(:technology_id))
希望这有帮助!