我看了this。
我试过了:
class Product < ActiveRecord::Base
has_many :variants
def skus; variants.map(&:sku).join(' ') end
multisearchable :against => [:name, :slug, :skus]
end
但我得到了:
PgSearch::Multisearch.rebuild(Product)
ActiveRecord::StatementInvalid: PG::Error: ERROR: column products.skus does not exist
我做错了什么?我可以采取另一种选择吗?
答案 0 :(得分:0)
在我的头顶,skus需要是范围,而不是方法。
我知道这是简短的答案,但没有足够的代表只是添加评论。
答案 1 :(得分:0)
我最近也遇到了这个问题。 multisearch
reindex方法假定所有mutisearch
能够反对的东西都是数据库列,而不是方法。
此处存在针对此行为的问题: https://github.com/Casecommons/pg_search/issues/157
解决此问题的最简单方法是使用必须如此评估的proc来声明multisearchable
调用:
multisearchable :against => [:name, :slug, :skus],
:if => proc{ true }
您可以看到它如何更改重建策略here。
您还可以按照自述文件中的说明重新定义模型上的rebuild_pg_search_documents
方法:
def self.rebuild_pg_search_documents
find_each { |record| record.update_pg_search_document }
end