0

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

所以我试图在我的授权中这样做(使用 Devise、CanCan、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)应该能够看到所有买家的所有产品(管理员/等)。买家将无法看到某些产品的价格和其他属性等。

我怎样才能实现所有这些?

4

1 回答 1

1

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

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

同样适用于编辑和更新操作。在这种情况下,不需要 Cancan。

于 2013-03-14T11:19:29.737 回答