【发布时间】:2019-01-04 18:05:51
【问题描述】:
我需要能够通过 has_many 关联搜索用户的特定项目。
我最初在我的 Items 模型上拥有 searchkick,现在在我的 User 模型上拥有它。几周前我也曾向question 询问过同样的问题,但是我没有收到任何回复,并且从那时起我对代码进行了相当多的修改。
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.first user.search '电子邮件' 我得到 # 的“未定义方法“搜索”
我该如何正确设置这样的东西?我真的应该把searchkick 放在Item 模型上吗?如果是这样,我将如何去搜索
【问题讨论】:
标签: ruby-on-rails elasticsearch searchkick