ruby-on-rails - 在 Ruby on Rails 中重构 group_by 的切换 block 语句

标签 ruby-on-rails ruby

如何重写这段代码,使其完全动态,并且不必使用 case 子句手动列出 @group 的所有可能值?

# Grouping
@group = params[:group] if !params[:group].blank?
case @group
  when 'category_id'
    @ideas_grouped = @ideas.group_by { |i| i.category_id }
  when 'status_id'
    @ideas_grouped = @ideas.group_by { |i| i.status_id }
  when 'personal_bias'
    @ideas_grouped = @ideas.group_by { |i| i.personal_bias }
  when 'business_value'
    @ideas_grouped = @ideas.group_by { |i| i.business_value }
end

最佳答案

您可以使用某种元编程 上面的代码可以用其中一种方式重构

if params[:group].present? && ["category_id","status_id","personal_bias","business_value"].include?(params[:group])
    @ideas_grouped = @ideas.group_by { |i| i.send(params[:group]) }
end

关于ruby-on-rails - 在 Ruby on Rails 中重构 group_by 的切换 block 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13192265/

相关文章:

ruby - 如何使用 Capybara 在两个帧之间切换

ruby-on-rails - 使用 ruby​​ 将文本添加到现有 pdf

ruby-on-rails - 需要手动要求 gem

ruby - 机械页面大小大于鱿鱼服务器报告的大小

ruby-on-rails - 如何仅在使用 ElasticSearch 和 Tire 存在时按属性过滤搜索?

ruby-on-rails - 如何为另一个语言环境提供自定义错误消息? (行动邮件)

ruby-on-rails - rails rake : test are slow

jquery - Ajax 请求使用 Rails 保存文件

javascript - Rails 如何获取表中每个对象的 Javascript 值?

将 Java 与 Ruby 结合使用时出现 java.lang.NullPointerException