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