【问题标题】:Searchkick with RolifySearchkick 与 Rolify
【发布时间】:2016-01-28 20:00:37
【问题描述】:

我有一个 Rails 4 应用程序,我正在尝试使用 Searchkick gem 搜索我的任务模型。但是,我只希望搜索结果包含当前用户具有特定Rolify 角色的任务。基本上,用户无法搜索其他用户的任务。

Rolify gem 具有获取当前用户具有特定角色的任务的方法。

Task.with_role(:viewer, current_user) #=> Tasks where the current user has a viewer role.

我不知道如何过滤 Searchkick 结果以仅搜索上面代码中返回的任务。我想做这样的事情,

Task.with_role(:viewer, current_user).search("foo") #=> Returns all Tasks that match foo

但是,它包括匹配 foo 的所有任务,而不仅仅是匹配 foo 的当前用户的任务。我知道 Rolify 使用一个 UsersRoles 表来关联用户和角色,但我不知道如何将它与 Task 模型的角色关联起来。

是否可以在 Searchkick 查询中搜索任务模型的角色以找到属于当前用户的某个角色?

【问题讨论】:

    标签: ruby-on-rails ruby elasticsearch rolify searchkick


    【解决方案1】:

    尝试使用 Searchkick/elaticsearch-rails 的 records 功能来执行此操作。

    Task.search("foo").records.with_role(:viewer, current_user)
    

    records 实质上将结果转换为 where(id: [ids, matching, the, elasticsearch, query]) 范围,您可以在其中添加其他查询。

    【讨论】:

    • 仅供参考,records 失去了 Elasticsearch 的 scoring
    猜你喜欢
    • 1970-01-01
    • 2021-02-05
    • 1970-01-01
    • 1970-01-01
    • 2019-05-21
    • 2014-06-03
    • 1970-01-01
    • 2021-09-13
    • 2019-08-21
    相关资源
    最近更新 更多