ruby-on-rails – 在Ruby on Rails中重构group_by的切换块语句
发布时间:2020-12-17 03:47:14 所属栏目:百科 来源:网络整理
导读:如何重写此代码,使其完全动态,我不必使用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' @i
如何重写此代码,使其完全动态,我不必使用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 解决方法
如果您不需要白名单:
@ideas_grouped = if (group = params[:group]).present? @ideas.group_by(&group.to_sym) end 如果您需要白名单,可以致电包含?首先(参见Amar的答案),但是为了添加一些新内容,让我用声明方法推送它(Object#whitelist留给读者练习,可能来自Ick): @ideas_grouped = params[:group].whitelist(IdeaGroupers).maybe do |group| @ideas.group_by(&group.to_sym) end (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |