ruby-on-rails - 调用 arerel 操作的动态方法

标签 ruby-on-rails ruby ruby-on-rails-4 activerecord arel

我有一段涉及arel操作的代码,想对其进行优化。

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 并不是一个好的做法。

谢谢

最佳答案

您可以使用public_send 。 所以你的代码将是:

OrderItem.joins(:order).where(order: {order_date: from_date..to_date }).public_send("group_by_#{group_type}", "order.order_date").sum("sub_total")

关于ruby-on-rails - 调用 arerel 操作的动态方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29849745/

相关文章:

ruby-on-rails - 在 rails_admin 中删除模型的操作

ruby-on-rails - 我找不到我的rails line_items Controller 创建操作错误?

activerecord - 导轨 4 : Export database to YAML

ruby-on-rails - 添加具有命名空间 admin 作为子文件夹的 Controller

ruby-on-rails - 在 Rails 4 中为 URL 助手设置默认命名空间?

ruby-on-rails - git push heroku master 权限被拒绝

ruby-on-rails - 设计密码加密

ruby-on-rails - 在 Ruby 中以编程方式输出 Word 文档格式文件的最佳方法是什么?

ruby-on-rails - Rails 5 Active Record 记录无效错误

ruby-on-rails - 从 HABTM 关系返回多个结果