我会尝试比标题更清晰。我希望用户能够查看可能位于以下URL的所有单个小部件:
/widgets/2
/widgets/3
/widgets/45
但我不希望用户查看整个索引:
/widgets
我知道我可以在控制器中查看此内容,甚至可以在index
和show
的视图中查看,但我正在寻找一种更简单的方法,我可以在Ability.rb
中添加此内容文件:
can :read, Widget
当然,这也将允许用户查看索引......
答案 0 :(得分:1)
我希望用户能够查看所有单独的小部件.. 但我不希望用户查看整个索引
使用:show
,而不是:read
。
can :show, Widget
:read
是[:show, :index]
的{{3}}。
答案 1 :(得分:0)
是否必须与康康人合作?因为如果不是,你可以在控制器上的索引操作之前进行过滤,如下所示:
controller
before_filter :check_user, :only => [:index]
def index
// code
end
def check_user
if current_user.type==1
redirect to root_url
end
end
好吧用cancan怎么样
ability.rb
cannot :manage, Widget
控制器
skip_authorize_resource :only => :show