Rails 5根据当前用户验证参数

时间:2018-01-27 21:30:42

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-4

我有一个产品型号属于一个类别。用户只能访问几个类别。

如何在创建产品时验证用户是否有权访问它正在尝试分配的category_id

我们假设我有session[:category_ids]中允许的类别列表。

在控制器中我使用强大的参数,如:

def product_params
  params.require(:product).permit(:name, :description, :category_id)
end

是否可以过滤掉我们无权访问的值?或者有更好的方法来实现这一目标吗?

1 个答案:

答案 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