我的一个职能是创建新的代理商。参数来自提交的表格,在我使用的控制器中:
agency_params
params.require(:agency).permit(:name, :cnpj, :country, :state, :city, :phone, :email, :platform_id)
end
在某些情况下(取决于用户角色)我不想允许任何platform_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
但这似乎不起作用。我怎么能这样做?控制器在模型中是正确的位置还是更好?
谢谢!
答案 0 :(得分:0)
我假设你在控制器方法中做了类似的事情:
def new
@agency = Agency.new(agency_params)
...
end
在这种情况下,agency_params
返回一个参数哈希以传递给new
方法。在您的示例中,如果current_user.platform
为真,则agency_params
不返回参数哈希,而是返回params[:platform_id] = current_user.platform_id
的结果。
您需要在返回参数hash之前修改: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