【发布时间】:2014-04-02 17:36:33
【问题描述】:
我正在使用 Think sphinx 作为我的搜索数据库,搜索后,我需要根据用户是否有权查看每个结果来过滤结果。我有一个类似 current_user.can_see 的方法?返回真/假。这很好用,但是,无论我如何尝试循环关系,它都必须将其转换为数组才能过滤/删除结果。这基本上打破了分页、总计数、总页数等。
有谁知道这样做的方法,或对过滤结果集进行分页的不同方法?
编辑:结果集从 ThinkingSphinx 搜索返回。
【问题讨论】:
-
你为什么不用cancan? - github.com/ryanb/cancan
-
因为 cancan 会要求我显示所有结果,但如果单击该项目的链接,则不允许访问它们。我只想不完全显示结果。
-
您只能显示用户有权访问的结果 - 请参阅github.com/ryanb/cancan/wiki/Fetching-Records
-
啊,我确实读到过,但我得到的结果来自 Thinking Sphinx 搜索,所以这种方法不起作用,因为 cancan 只使用范围。
-
原来 TS 返回一个数组而不是一个 activeresource::relation。所以我可以在数组上删除_if。它与分页计数混淆,但我想它有效
标签: ruby-on-rails ruby activerecord