我不太喜欢它的外观方法all
尤其是那部分 .group_by{|x| x.week_number}.values
因为这部分可以更换?week_number是用户更新模型中的实例方法。
user_updates_controller.rb
def all
@weekly_updates = current_user.user_updates.group_by{|x| x.week_number}.values
end
user_update.rb
def week_number
(((created_at.utc) - user.first_program_started_at.utc.beginning_of_day) / 86400 / 7).ceil.to_i || 1
end
好吧,我相信我现在理解得更好了,但如果这仍然不是你想要的,请告诉我。
我相信在你的情况下,你可以简单地这样做:
@weekly_updates = current_user.user_updates.group_by(&:week_number).values
&:week_number
表示法是创建 proc 的简写,它将有效地在传入的对象(在本例中为 UserUpdate
对象)上调用 week_number
方法。最终,您应该看到完全相同的结果。不会有任何性能差异,所以它主要只是漂亮你的代码。
查看这个问题以及有关该&:
符号的许多示例和解释的答案。