【发布时间】:2014-10-28 22:55:19
【问题描述】:
我正在尝试获取我正在制作的工作流工具的活动任务列表,数据结构如下:
- 用户
- has_many 项目
- has_many 子项目
- has_many 任务
- has_many TimeLogs
- has_many 任务
- has_many 子项目
- has_many 项目
活动任务定义为具有 TimeLog 且没有“已完成”时间戳的任何任务。
我正在尝试让主页显示这个完整的结构,但只显示在某个级别具有活动任务的父结构。查询不应返回任何下方没有活动任务的用户/项目/子项目。
到目前为止我已经尝试过:
- 对所有四个表进行连接,这会产生重复的行
- WHERE EXISTS 语句,仅返回相关用户,但在我尝试访问其子项时不维护 WHERE 子句
有没有办法在不手动剔除 Ruby 中的数据的情况下实现这一点?
【问题讨论】:
-
您可以将
.uniq添加到连接查询的末尾。然后 ActiveRecord 将在没有重复项的情况下进行查询。 -
这适用于顶级用户,但是当我抓取用户的子项目时,它只会抓取所有项目。通过孩子们传递
where子句似乎很乱,所以我正在寻找一种方法来一次抓住它,也许将 ActiveRecord 查询转换为嵌套哈希?
标签: ruby-on-rails ruby sql-server activerecord