3

我正在尝试根据用户的授权获取搜索结果...

4

2 回答 2

7

执行 Ransack 搜索后,只需使用 CanCan 过滤结果。这是我的应用列出提供者的示例。

如果您的能力不使用方块,请使用accessible_by

def index
  @search = Provider.sorted.search(params[:q])
  @providers = @search.result.accessible_by(current_ability)
end

如果您的能力正在使用块,则不能使用accessible_by

def index
  @search = Provider.sorted.search(params[:q])
  @providers = @search.result.select{|p| can? :read, p}
end

有关更多详细信息和示例,请查看 cancan wiki 上的Fetching Records

希望有帮助

于 2013-05-29T18:42:25.583 回答
1
As of 1.4 the index action will load the collection resource using accessible_by

所以现在我们拥有所有可访问的记录index。因此以下将起作用

def ProvidersController
  before_filter :authenticate_user!
  load_and_authorize_resource

  def index
    @q = @providers.search(params[:q]).page(params[:page])
    @providers = @q.result
  end

end
于 2015-10-05T09:30:07.633 回答