Ruby on rails 覆盖Rails中的参数

Ruby on rails 覆盖Rails中的参数,ruby-on-rails,Ruby On Rails,我的一项职能是创建新的机构。参数来自提交的表单,在我的控制器中我使用: agency_params params.require(:agency).permit(:name, :cnpj, :country, :state, :city, :phone, :email, :platform_id) end 在某些情况下(取决于用户角色),我不希望允许任何平台id,只允许一个特定的平台id 所以我的想法是: def agency_params params.require

我的一项职能是创建新的机构。参数来自提交的表单,在我的控制器中我使用:

agency_params
      params.require(:agency).permit(:name, :cnpj, :country, :state, :city, :phone, :email, :platform_id)
end
在某些情况下(取决于用户角色),我不希望允许任何平台id,只允许一个特定的平台id

所以我的想法是:

def agency_params
      params.require(:agency).permit(:name, :cnpj, :country, :state, :city, :phone, :email, :platform_id)

      if current_user.platform
        params[:platform_id] = current_user.platform.id
      end
    end
但这似乎不起作用。我怎么能这么做?控制器是正确的位置,还是在模型中更好


谢谢

我假设您正在控制器方法中执行类似的操作:

def new
    @agency = Agency.new(agency_params)
    ...
end
在这种情况下,
agency_params
返回一个散列参数以传递给
new
方法。在您的示例中,如果
current_user.platform
为true,则
agency_params
不会返回参数散列,而是返回
params[:platform_id]=current_user.platform_id
的结果

在返回参数哈希之前,您需要修改
:platform_id

def agency_params
    if current_user.platform
        params[:agency][:platform_id] = current_user.platform.id
    end
    params.require(:agency).permit(:name, :cnpj, :country, :state, :city, :phone, :email, :platform_id)
end

您不认为它应该是
参数[:agency][:platform\u id]=当前用户.platform.id
?谢谢。谢谢,@31piy