使用 Searchkick 搜索特定用户的项目
Search for a specific user's items with Searchkick
我需要能够通过 has_many 关联搜索用户的特定项目。
我最初在我的项目模型上有 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')
,以便我 return 只有该用户有权访问的项目。
目前,当我在 rails 控制台中 运行 这样的事情时:
用户 = User.first
user.search 'Email'
我得到 `undefined method 'search' for #
我该如何正确设置这样的东西?我真的应该把 searchkick
放在 Item 模型上吗?如果是这样,我将如何着手搜索
我的方法是使用 Searchkick 为 Item
模型编制索引,因为这样更容易获得所需的结果,特别是如果您只想要有关结果中返回的项目的信息(而不是也必须是用户数据)。
然后您可以使用类似以下内容搜索 Item
模型:
@results = Item.search(
'Query',
where: {consumer_type: 'User', consumer_id: current_user.id},
load: false
)
我需要能够通过 has_many 关联搜索用户的特定项目。
我最初在我的项目模型上有 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')
,以便我 return 只有该用户有权访问的项目。
目前,当我在 rails 控制台中 运行 这样的事情时: 用户 = User.first user.search 'Email' 我得到 `undefined method 'search' for #
我该如何正确设置这样的东西?我真的应该把 searchkick
放在 Item 模型上吗?如果是这样,我将如何着手搜索
我的方法是使用 Searchkick 为 Item
模型编制索引,因为这样更容易获得所需的结果,特别是如果您只想要有关结果中返回的项目的信息(而不是也必须是用户数据)。
然后您可以使用类似以下内容搜索 Item
模型:
@results = Item.search(
'Query',
where: {consumer_type: 'User', consumer_id: current_user.id},
load: false
)