轨道上的红宝石 - 在group_by中使用实例方法



我不太喜欢它的外观方法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 方法。最终,您应该看到完全相同的结果。不会有任何性能差异,所以它主要只是漂亮你的代码。

查看这个问题以及有关该&:符号的许多示例和解释的答案。

相关内容

  • 没有找到相关文章

最新更新