[英]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.