【问题标题】:Rails: How can i refactor my controller params codeRails:我如何重构我的控制器参数代码
【发布时间】:2021-05-18 10:33:14
【问题描述】:

我需要重构这个私有方法。 Codeclimate 给我一个错误 msj 因为参数行太长。我该如何重构它?

def base_plan_params
    params[:base_plan][:debit_date_attributes]&.merge!(
      account_id: current_account.id,
      _destroy: params[:base_plan][:debit_date_attributes][:date_type].blank?,
    )
    params.require(:base_plan).permit(
      :code,
      :cover,
      :name,
      :products,
      :pricing_model,
      :metered,
      debit_date_attributes: %i[id account_id date_type value _destroy],
    )
  end```

【问题讨论】:

    标签: ruby-on-rails refactoring dry automated-refactoring


    【解决方案1】:

    在这里假设触发了哪个 CodeClimate“太长”错误,因为您没有澄清。

    您可以将允许的参数组成一个数组,如下所示:

    permitted_params = [:code, :cover, :name, :products, :pricing_model, :metered]
    params.require(:base_plan).
           permit(*permitted_params, 
                  debit_date_attributes: %i[id account_id_data_type value _destroy],)
    

    我个人不会打扰,但如果 CodeClimate 警告给您带来困扰,那么这个解决方案可能会奏效。

    【讨论】:

    • 谢谢 Les,是的,我没有提供太多背景信息,但您已经回答了我的问题。错误 msj 是:行太长,考虑重构。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-21
    • 2011-04-30
    • 2015-01-06
    • 1970-01-01
    相关资源
    最近更新 更多