【发布时间】:2012-01-19 22:15:22
【问题描述】:
假设我有两个 Rails 模型,用户和列表。用户有_许多列表和列表属于_一个用户。
用户在任何给定时间都有一个他们正在处理的特定列表。这由 User 模型上的 active_list_id 外键表示。
假设我想通过 ActiveRecord 运行以下查询的等效项:
SELECT * FROM users JOIN lists
ON lists.id = users.active_list_id
基本上,我正在尝试编写一种方法,该方法将让每个用户连同她当前的活动列表一起显示列表完成的统计信息。
在我看来,解决方案类似于
Users.joins(:lists).where("users.active_list_id = lists.id")
但我似乎无法让它工作**,而且我不确定 Rails 中最惯用的正确解决方案是什么。
我应该如何使用 ActiveRecord 最有效地提取这些数据?
提前感谢您提供的任何帮助。
编辑:上面的查询确实有效,但似乎没有提取用户记录及其关联列表的连接。
【问题讨论】:
-
通常表名是“users”和“lists”——这可能是你的问题吗?
-
好电话,但不,那是我的错误。这些表格实际上是小写的。为了清楚起见,我将编辑我的问题,谢谢。
-
我误解了,问题是查询而不是表。你是对的,没有大写的查询返回我需要的用户,但它似乎也不包括列表记录。
-
该死。好吧,你在做什么看起来是正确的。您是否在 mysql 控制台中尝试过该 SQL?您是否尝试过制作一个更简单的 where 子句(例如,'lists.id = 1' 或其他一些琐碎的东西)来尝试隔离它发生故障的位置?
-
我确实在 sql 控制台中尝试过(实际上是 sqlite)...SQL 中的查询返回连接的两个表记录...*headscratch*
标签: ruby-on-rails activerecord join