2014-11-06 74 views
0

我有郵件,這是在飼料。CanCan嵌套資源索引操作授權

爲了能夠查看供稿中的帖子,必須在供稿中。

在我的路線中,帖子嵌套在提要下。

在我的PostsController,我有:

class Api::V1::PostsController < ApiController 
    load_resource :network, find_by: :external_id, only: [:index, :create] 
    load_resource :post, :through => :network, only: [:create] 

    load_resource find_by: :external_id, except: [:create] 

    authorize_resource 

    def index 
    @posts = @network.posts.page(params.has_key?(:page) ? params[:page] : 1).per(15) 

    render status: 200, 
      json: @posts 
    end 

相應的能力:

can [:index, :create], Post do |post| 
     user.in_feed? post.feed_id 
end 

出於某種原因,所有用戶通過授權雖然。我將如何解決這個問題?

回答

0

這是CanCanCan的預期行爲。從有關使用塊定義功能的文檔:

該塊僅在實際實例對象存在時才被評估。 檢查課程權限時未對其進行評估(例如在 索引操作中)。

由於indexcreate操作都不存在實例,因此該塊永遠不會運行。你想要

can [:create, :index], Post if user.in_feed? post.feed_id