当前位置: 首页 > 面试题库 >

Rails Searchkick / Elasticsearch has_many和belongs_to关联

东方嘉木
2023-03-14
问题内容

我试图使用Searchkick来基于多个模型运行搜索并返回

我的书模型包含此

class Book < ActiveRecord::Base

  searchkick

  has_many :book_subjects
  has_many :subjects, through: :book_subjects

  belongs_to :author
  belongs_to :publisher

end

然后我的控制器有这个

def index

 if params[:search].present?
   @books = Book.search(params[:search], operator: "or")
 else
  @books = Book.all
 end
end

我希望搜索结果搜索关联的模型并在那里返回任何结果-嘘主题名称,作者和发布者。

谢谢


问题答案:

在Book模型中,您需要search_data为索引建立一个块。

def search_data
  attributes.merge(
    author_name: author(&:name)
    publisher_name: publisher(&:name)
    subjects_name: subjects.map(&:name)
  )
end

这会将关联添加到您的索引中。

您将.map方法用于has_many关联。



 类似资料:
  • CatLib.ILRuntime 扩展库赋予了 CatLib 框架可以正常的在 ILRuntime 热更新代码中运行,但是扩展包并没有包含如何将热更新的代码文件加载到ILRuntime.AppDomain 中,这一部分需要您根据项目情况来自行完成。 本文档,简叙了如何使用一种比较优雅的方式来和项目进行关联,并完成代码加载的操作。 除了文档以外,您也可以查看 demo-how-to-use-catl

  • 问题内容: 我有这种关系:一个用户可以有零只或一只狗,但是一只狗必须属于某人。 我想定义以下范围: 我可以在第一种情况下执行此操作,因为默认情况下,在rails中,联接是INNER JOIN: 1 /这种针对第一个示波器的解决方案是否足够好? 2 /第二个课程你会做什么? 3 /(有一些关联)是否有更好的方法?: 谢谢你的帮助! 问题答案: 对于问题2,我认为以下方法应该有效: 其中include

  • 简介 本章中,我会讲解用于表示数据关联的关联表和哈希表。关联的数据是由键和值组成的序对,值由键唯一确定的。表1显示了书和作者构成的配对。书籍可以确定作者,反之由作者确定书籍则不可,这是因为一个作者可能会写很多本书。表1中,由于P. Graham和L.Carroll分别写了两本书,因此他们的书无法被作者的名字唯一确定。 表1:作者和书 Author Book P. Graham On Lisp P.

  • 本文向大家介绍laravel ORM关联关系中的 with和whereHas用法,包括了laravel ORM关联关系中的 with和whereHas用法的使用技巧和注意事项,需要的朋友参考一下 with 渴求式预加载 可以有效的避免 N+1 问题,用法如下: 如果有多个关联关系可以用“,”隔开,还可以使用闭包来对关联关系进行限制,向下面这样: 结果会查找所有的用户,返回的每个用户信息中都会多一个

  • 问题内容: 我有一个跟随者系统,它是用ajax执行的。问题是“关注者”按钮不起作用。并不是点击,并且一天结束时用户数量的关注者数量不会增加。我下面有我的代码 模板 然后我在base.html中提供了块查询 Views.py 如有需要,将提供进一步的代码,任何帮助。 问题答案: 您将关注和取消关注混为一谈,如果取消关注则创建联系人。 模板:

  • 嗨,我只知道这是一个古老的问题,但今天只是好奇。正如我们所知connection.close也会关闭preared语句(如果我错了请纠正我)。但是如果我关闭连接然后关闭preared语句会怎样 我会得到一个空指针异常吗? 有人说这取决于jvm的速度。有时,ps.close()会在conn.close完成其工作之前运行并首先关闭,因此您不会得到null指针。 为了测试它,我修改了代码 但是我没有得到