如何限制当前登录的用户只能看到属于他们的产品?(How do I restrict the curr

2019-10-29 07:51发布

-如果用户具有特定角色登录vendor -他们应该只看到他们在他们的商店已创建的项目。 他们不应该能够看到产品的其他供应商。

所以我想这样做在我的授权(使用设计,康康舞,Rolify)。

我尝试这样做:

user ||= User.new # guest user (not logged in)
if user.has_role? :vendor
  can :dashboard
  can :manage, [Product, Vendor], :vendor_id => user.id
  can :view, [Product], :vendor_id => user.id
end

但是....没有太多的运气与......我缺少什么?

编辑1

我知道我可以限制产品,如控制器:

 @product = current_user.products

但是,这不是我所期待的。 在这种情况下,供应商(即角色的用户:vendor )应该只能够看到它们添加到存储产品,但他们不应该能够看到其他供应商增加产品。 然而,买方(即角色的用户:buyer )应该能够看到所有的产品从所有买家(如将管理员的/ etc)。 买方将无法看到的一些产品等的价格,以及其他一些属性

我怎样才能做到这一切?

Answer 1:

在控制器,你只能找到属于该用户的产品。

def show
  @product = @user.products.find(params[:id])
  ...

同样适用于编辑和更新动作。 康康舞在这种情况下是不需要的。



文章来源: How do I restrict the currently logged in user to only see products that belong to them?