我真的不喜欢它看起来方法all
,特别是那部分
.group_by{|x| x.week_number}.values
因为这部分可以替换吗?
week_number是UserUpdate模型中的实例方法。
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
答案 0 :(得分:0)
好吧,我相信我现在明白了,但请告诉我这是不是你想要的。
我相信你的情况,你可以这样做:
@weekly_updates = current_user.user_updates.group_by(&:week_number).values
&:week_number
表示法是创建proc的简写,并且将有效地调用传入的对象上的week_number
方法(在本例中为UserUpdate
对象)。最终,您应该看到完全相同的结果。不会有任何性能差异,所以它主要只是为你的代码做好准备。
查看this question以及有关该&:
符号的大量示例和说明的答案。