所以我已经在这个问题上挣扎了几个小时,而且我真的不知道如何得到我需要的结果。也许有些人有线索?
到目前为止我的查询:
items = Item.joins(projects: :connexions)
.where.not(connexions: []).where("connexions.updated_at > ?", 3.years.ago)
它工作正常。但我需要的是物品,只有最后连接" updated_at"项目大于3年前。
基本上,我想做一个items.projects.connexions.last.where等。
你有一些提示吗?
谢谢:)
编辑:更具体地了解我的"连接"规范,我需要检索3年以来没有连接的项目的记录。这就是我使用updated_at字段的原因!
编辑2 :我设法使用jvillian答案。
items = Item.joins(:projects).where(projects: {id: Project.joins(:connexions).where(
connexions: { id: Connexion.order(updated_at: :desc).limit(1).where("updated_at < ?", 3.years.ago)}
)}
)
谢谢!
答案 0 :(得分:0)
可能适合您(未经测试)
Item.where.not(id:
Item.joins(:projects).where(
projects: {id: Project.joins(:connections).where(
connections: {id: Connection.where("updated_at <= ?", 3.years.ago)}
)}
)
)
它很棒的火腿(如果它甚至有效)。