我有一个产品型号属于一个类别。用户只能访问几个类别。
如何在创建产品时验证用户是否有权访问它正在尝试分配的category_id
?
我们假设我有session[:category_ids]
中允许的类别列表。
在控制器中我使用强大的参数,如:
def product_params
params.require(:product).permit(:name, :description, :category_id)
end
是否可以过滤掉我们无权访问的值?或者有更好的方法来实现这一目标吗?
答案 0 :(得分:1)
在您的products_controller中添加
before_action :require_category_access
创建一些函数,检查用户是否可以访问在保存数据之前运行的正确类别。
def require_category_access
if current_user <has access to the category>
return true
else
redirect_to some_url
flash[:error] = "no access for you"
end
end