繁体   English   中英

使用Searchkick搜索特定用户的商品

[英]Search for a specific user's items with Searchkick

我需要能够通过has_many关联搜索用户的特定项目。

我最初在自己的Items模型上使用了搜索searchkick ,现在在我的用户模型上使用了搜索searchkick 我也问过一个问题,几个星期前,这个同样的问题,但是我没有收到任何回应,从那时起已经修改了代码颇有几分。

class User < ApplicationRecord
    searchkick
    has_many :items, -> (user) { unscope(:where).where("(consumer_type = ? and consumer_id = ?))", 'User', user.id) }, fully_load: false, dependent: :destroy

    def search_data
        attributes.merge(
            items: library_items.as_json,
        )
    end
end

在我的控制器中,我需要能够运行查询,例如: @results = current_user.items.search('Query') ,以便我返回只有该用户有权访问的项目。

当前,当我在rails控制台中运行类似的命令时:user = User.first user.search'Email'我得到了#的'undefined method'search'

我该如何正确设置像这样的东西? 我是否应该在项目模型上实际放置searchkick点? 如果是这样,我将如何继续搜索

我这样做的方法是使用Searchkick为Item模型建立索引,因为这样可以更轻松地获得所需的结果,尤其是在您只需要有关结果中返回的项目的信息(也不一定是用户数据)的情况下。

然后,您可以使用以下内容搜索Item模型:

@results = Item.search(
             'Query',
             where: {consumer_type: 'User', consumer_id: current_user.id},
             load:  false
           )

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM