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])
  ...

編集および更新アクションにも同じことが当てはまります。この場合のカンカンは必要ありません。

于 2013-03-14T11:19:29.737 に答える