【问题标题】:rails 4 activerecord relation pagination after filtering by permission通过权限过滤后的rails 4 activerecord关系分页
【发布时间】: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


【解决方案1】:

我假设你正在使用 will_paginate。

当你有一个数组而不是一个集合时,你唯一需要做的就是在你的应用程序中初始化 will_paginate 以便为数组工作。

您需要提供一个仅包含此行的初始化程序(例如config/initializers/will_paginate.rb):

require 'will_paginate/array'

然后就可以了。它正在工作。

【讨论】:

    猜你喜欢
    • 2014-01-07
    • 2017-09-30
    • 1970-01-01
    • 1970-01-01
    • 2020-07-03
    • 2013-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多