具有自引用关联的pg_search_scope不起作用

pg_search_scope with self-referencing association not working

提问人:user3060126 提问时间:11/10/2023 最后编辑:user3060126 更新时间:11/10/2023 访问量:25

问:

我有一个自引用协会:

class EventAttendee < ApplicationRecord

belongs_to :initial_attendee, class_name: "EventAttendee", foreign_key: :initial_attendee_id

使用pg_search宝石,我正在尝试编写一个pg_search_scope,以匹配event_attendee记录以及(自关联的)initial_attendee记录(实际上也是event_attendee记录)。据我所知,这应该有效:

  pg_search_scope :search,
    against: [:last_name, :first_name, :email],
    associated_against: {initial_attendee: [:last_name, :first_name, :email]}

但事实并非如此,它只是返回匹配的常规event_attendee记录,但不返回任何与关联的initial_attendee记录匹配的记录。关于为什么这不起作用以及如何让它工作的任何想法?实际上,我在同一模型中对不同的标准belongs_to关联有另一个搜索范围,效果很好。是关于自我参照联想的吗?

Ruby-on-Rails PG搜索

评论

1赞 zaphodbln_ 11/10/2023
值得一提的是,这涉及到一种特殊的宝石。此外,您几乎可以肯定需要某种递归查询。使用 PostgreSQL,您可以在此处找到文档: postgresql.org/docs/current/... 。在继续使用 Rails 之前,请确保在 PostgreSQL 中获得所需的输出。
1赞 zaphodbln_ 11/10/2023
顺便说一句:阅读 PgSearch-Gem 的文档时,它说:“PgSearch 构建了利用 PostgreSQL 全文搜索的命名范围”——所以我认为递归查询不在这个 gem 的范围内。因此,您要么找到另一颗宝石,要么自行:-D

答: 暂无答案