Rails嵌套查询

时间:2018-12-07 02:26:56

标签: ruby-on-rails

我有以下型号

let pay = msg.payload.slice(4, -1).split(",");
let [r,g,b] = [...pay];
msg.payload = `rgb(${g},${b},${r})`;
return msg;

如上所述,用户可以确认参加活动。一个轨道是一组事件,一个事件可以属于多个轨道。我们说用户在确认参加该轨道下的所有事件时完成了该轨道。

我的问题是,有没有办法使用ActiveRecord查询界面查找用户已完成的所有曲目?

谢谢。

1 个答案:

答案 0 :(得分:0)

您应该能够从曲目结尾开始查询,因为这是您要返回的输出:

user = User.first
Track.joins(events: :acknowledgements).where(complete: true, events: { acknowledgements: { user_id: user.id })

在这里,您渴望加载曲目的事件及其确认,以提高性能,然后(假设存在此列)检查曲目是否完整,并且事件的确认包含您的用户。

您在user_id表中检查acknowledgements的原因是避免必须在查询中预加载users来提高性能。

希望有帮助-让我知道您的生活状况或有任何疑问。