基于用户授权,我想清理参数以包括允许他们更新的参数。一个模型有 5 种不同的角色,我不想列出 25 种可能的组合并调用
params.require(:asset).permit(东西)
25次
有没有办法“构建”强参数?我发现的唯一可能的方法是“合并”,但我似乎无法让它工作
这就是我所在的位置:
def update_params
p = params.require(:asset)
if can? :update, Asset
p.merge params.require(:asset).permit(:code, :description)
end
if can? :update, Ability::THING1
p.merge params.require(:asset).permit(:some_nested_stuff => [:id, :quantity, :_destroy],
:some_other_nested_stuff => [:id, :quantity, :_destroy])
end
if can? :update, Ability::THING2
p.merge params.require(:asset).permit(more_nested_stuff: [:id, :date, :note])
end
if can? :update, AssetNote
p.merge params.require(:asset).permit(notes_attributes: [:id, :note, :_destroy])
end
p
end
有了这个,我得到“ForbiddenAttributesError”,而不是仅仅丢弃属性。