我需要的能力,搜索用户的特定项目,通过有许多关联。
我本来有 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'for#
我该如何正确地设置这样的东西呢?我真的应该 searchkick
关于物品模型?如果是这样的话,我该怎么去寻找呢
1条答案
按热度按时间qpgpyjmq1#
我的方法是索引
Item
使用searchkick建模,因为这样更容易获得所需的结果,特别是当您只需要结果中返回的项目的信息(不一定也需要用户数据)时。然后你可以搜索
Item
使用以下方式建模: