如果用户使用特定角色登录 - 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
的用户)应该能够看到来自所有买方的所有产品(管理员/等)。买方将无法查看某些产品的价格和其他一些属性等。
我怎样才能实现这一切?
答案 0 :(得分:1)
在控制器中,您只能找到属于该用户的产品。
def show
@product = @user.products.find(params[:id])
...
同样适用于编辑和更新操作。在这种情况下不需要康康。