我有一段代码,其中涉及一个雷尔操作,并希望优化它。
case group_type
when "week"
gmv = OrderItem.joins(:order).where(order: {order_date: from_date..to_date }).group_by_week("order.order_date").sum("sub_total")
when "month"
gmv = OrderItem.joins(:order).where(order: {order_date: from_date..to_date }).group_by_month("order.order_date").sum("sub_total")
when "day"
gmv = OrderItem.joins(:order).where(order: {order_date: from_date..to_date }).group_by_day("order.order_date").sum("sub_total")
end 我想用一种方法把它写成一行,只需用"group_by_#{group_type}“代替。
我可以用伊娃。但使用eval并不是一种好的做法。
谢谢
发布于 2015-04-24 14:18:18
您可以使用发送。所以你的代码是:
OrderItem.joins(:order).where(order: {order_date: from_date..to_date }).public_send("group_by_#{group_type}", "order.order_date").sum("sub_total")https://stackoverflow.com/questions/29849745
复制相似问题