0
说我有一个对象Assignment
是has_many :exercises
筛选按最近联想对所有对象的ActiveRecord
什么是仅基于每个对象的最近exercise
到范围分配的最佳方式?或者,如何才能选择每个作业最新的Exercise
?
像这样的东西就是我想象后者:
Exercise.distinct(:assignment_id)
但是,这并不工作。 (返回所有练习)我也试过
Exercise.group(:assignment_id)
但是,抱怨说,exercises.id
列还必须出现在group子句。但是,通过assignment_id
和id
(显然)添加该组,同样返回所有练习。
我还希望知道该怎么做的其他选项(从未像我想的那样工作),可以根据最近的练习过滤assignments
。
Assignment.where("most_recent_exercise.created_at <= ?", DateTime.current.beginning_of_day)
任何帮助,非常感谢!
作为一个例子,考虑下面的对象(在ID被给定的顺序假设创建)
Assignment 1
Exercise 1
Exercise 2
Exercise 3
Assignment 2
Exercise 4
Assignment 3
Exercise 5
Exercise 6
我希望能够调用
Exercise.most_recent
,并得到锻炼3, 4, 6
因为它们是最近为其各自的作业创建了练习。
这只会得到非常最近练习的分配。我想为每个作业最近的练习。 – Rockster160
同样,这只是返回单个练习。我想返回每个练习,这是任何给定作业的最后一次出现。 – Rockster160
以示例更新后。 – Rockster160