Rails: 我如何重构我的控制器参数代码

Rails: How can i refactor my controller params code

我需要重构这个私有方法。 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```

这里假设触发了哪个 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 警告给您带来困扰,那么此解决方案可能会奏效。