Rails - 我可以一起使用Ransack和CanCan吗?

时间:2012-11-05 22:54:33

标签: ruby-on-rails-3.1 cancan ransack

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

2 个答案:

答案 0 :(得分:6)

执行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

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

上的cancan wiki

希望有所帮助

答案 1 :(得分:1)

class NavigationFilter
{
    [PropertyDeclaringType(typeof(Foo))]
    [PropertyName("Bars")]
    public static Expression<Func<Bar,bool>> OnlyReturnBarsWithSpecificSomeValue()
    {
        var someValue = SomeClass.GetAValue();
        return b => b.SomeValue == someValue;
    }
}

现在我们在DB::table('repositories')->delete(); $csv = Reader::createFromPath($path_to_file); DB::table('repositories')->insert($csv->fetchAssoc(['last_name','first_name', 'matricule', 'username'])); flash()->success('Repository updated successfully'); return redirect('repositories'); 行动中拥有所有可访问记录。因此,以下工作

As of 1.4 the index action will load the collection resource using accessible_by