【发布时间】:2018-12-18 18:32:12
【问题描述】:
在我的应用程序中,我有一个名为 Talent 的实体,它可以拥有许多天赋能力。像这样:
#model/talent.rb
class Talent < ApplicationRecord
searchkick
has_many :talent_talent_abilities, dependent: :destroy
has_many :talent_abilities, through: :talent_talent_abilities
scope :search_import, -> { includes(:talent_type, :talent_abilities, :talent_talent_abilities, :talent_primary_equipments, :talent_interests) }
因此,例如,如果我在控制台上执行以下操作:
t.talent_abilities =
TalentAbility Load (11.7ms) SELECT "talent_abilities".* FROM "talent_abilities" INNER JOIN "talent_talent_abilities" ON "talent_abilities"."id" = "talent_talent_abilities"."talent_ability_id" WHERE "talent_talent_abilities"."talent_id" = $1 LIMIT $2 [["talent_id", 13], ["LIMIT", 11]]
我想要这样,在我的 searchkick 上,我可以根据用户是否有才能进行搜索。所以,在这个例子中,我希望如果我把“水肺潜水”放在我的搜索中,它会返回所有具有“水肺潜水”的 Talent_ability.name 的人才。
我将此方法添加到我的 Talent 模型中:
def search_data
{
name: user.full_name,
gender: gender,
ethnicity: ethnicity,
eye_color: eye_color,
hair_color: hair_color,
type: talent_type&.name,
talent_ability: talent_abilities.name
}
但是如果我用“Scuba”这个词进行搜索,我没有得到任何结果?
我在这里做错了什么?这是在 searchkick 搜索中添加关系的正确方法吗?
谢谢
【问题讨论】:
标签: ruby-on-rails elasticsearch searchkick