Ruby on rails 带关联模型字段的pg_搜索

Ruby on rails 带关联模型字段的pg_搜索,ruby-on-rails,pg-search,Ruby On Rails,Pg Search,我读书 我试过: class Product < ActiveRecord::Base has_many :variants def skus; variants.map(&:sku).join(' ') end multisearchable :against => [:name, :slug, :skus] end 我做错了什么?我能换一种选择吗?我想,SKU需要的是范围,而不是方法 我知道这是一个简短的回答,但没有足够的重复次数来添加评论。我最近也遇到了

我读书

我试过:

class Product < ActiveRecord::Base
  has_many :variants
  def skus; variants.map(&:sku).join(' ') end

  multisearchable :against => [:name, :slug, :skus]
end

我做错了什么?我能换一种选择吗?

我想,SKU需要的是范围,而不是方法


我知道这是一个简短的回答,但没有足够的重复次数来添加评论。

我最近也遇到了这个问题。
multisearch
reindex方法假定所有
multisearch
能够针对的都是数据库列,而不是方法

这里有一个针对这种行为的问题:

解决此问题的最简单方法是使用一个proc声明您的
多可搜索的
调用,该过程的计算方式如下:

multisearchable :against => [:name, :slug, :skus],
                :if => proc{ true }
您可以看到这将如何改变重建策略

您还可以在模型上重新定义
重建\u pg\u搜索\u文档
方法,如自述文件中所述:

def self.rebuild_pg_search_documents
  find_each { |record| record.update_pg_search_document }
end

范围定义了一个类方法,
根据
接收列名,列名是实例方法,一个选项可以是将SKU缓存在新列中,并在变量更改时更新它们。但在我看来,范围不是一个选项。
def self.rebuild_pg_search_documents
  find_each { |record| record.update_pg_search_document }
end