私は、Devise と CanCan を使用して Rails 3.2 アプリケーションに取り組んでいます。
私のユーザー モデルはユーザーで、製品リソースへのアクセスをユーザーが作成したものに制限したいと考えています。関連するコード スニペット:
アプリ/モデル/能力.rb
class Ability
include CanCan::Ability
def initialize(user)
if user
can :manage, Product, user_id: user.id
end
end
end
アプリ/コントローラー/products_controller.rb
class ProductsController < ApplicationController
load_and_authorize_resource
..
end
config/routes.rb
...
devise_for :products
resources :products do
resources :sizes
end
...
すべてが期待どおりに機能しています。ユーザーは、自分が作成したものではない製品を表示、編集などできません。しかし問題は、ユーザーが /products の製品インデックスにアクセスすると、すべての製品が表示されることです。
インデックス ページで関連製品をフィルタリングするにはどうすればよいですか?
グーグルで検索してauthorize! :index, Ability
、index アクションを と一緒に試してみましたcan :index, Product, user_id: user.id
が、ユーザーは Index ページにまったくアクセスできません。
どんな助けでも大歓迎です。