【发布时间】:2015-10-23 13:36:10
【问题描述】:
将 Rails 4.2.4 与 Devise (3.5.2) 和 Pundit (1.0.1) 结合使用。 Decent_exposure (2.3.2)。
我有一个用户和创意的简单嵌套关联:
class User < ActiveRecord::Base
has_many :ideas
...
class Idea < ActiveRecord::Base
belongs_to :user
...
在 routes.rb 中
devise_for :users
resources :users do
resources :ideas
end
如果 current_user 不是 Ideas 的所有者(在本例中,如果 current_user.id != 1),我只是试图禁止访问 users/1/ideas。 我不知道该怎么做。我可以在索引视图中只显示 current_user 想法:
[创意控制器]
def show
authorize idea
end
[理念政策]
def show?
@current_user == @idea.user
end
但是如何防止用户简单地导航到其他用户的创意索引页面? 我想在 Ideas 控制器中我应该使用类似的东西:
def index
authorize user
end
然后呢?如何将有关创意集合的信息发送到用户策略? 还是我应该通过创意政策本身进行授权?
【问题讨论】:
标签: ruby-on-rails-4 nested authorization pundit