我正在尝试使用pg_search来搜索两个模型。我有一个'雇用'模型,有两列'child_id'和'book_id'。我想在'Children'模型中索引与child_id相关联的子名称。
我的模型看起来像这样:
Hire.rb
with t as (select to_date('1/20/2015','mm/dd/yyyy') calendar_date from dual)
select t.calendar_date, <other columns>
from CE.ISSUE_ITEM i, t
where trunc(i.created_dt) = t.calendar_date
但是当我尝试构建索引时(rake pg_search:multisearch:rebuild [Hires])我收到以下错误:
class Hire < ActiveRecord::Base
belongs_to :book
belongs_to :child
accepts_nested_attributes_for :book
accepts_nested_attributes_for :child
include PgSearch
multisearchable :against => [:child_id, child_forename]
def child_forename
child.forename
end
end
如何构建此查询以索引子名称?
答案 0 :(得分:0)
尝试在multisearchable
之前定义class Movie < ActiveRecord::Base
belongs_to :director
def director_name
director.name
end
multisearchable against: [:name, :director_name]
...
方法:
ReactDOM.render
让我知道它是否有效。对于我前一段时间尝试的测试似乎工作正常。
答案 1 :(得分:0)
我在pg搜索时遇到了一些问题。所以我做了自己的。看看这个。
答案 2 :(得分:0)
您在child_forename前面缺少一个冒号。
您需要传递符号:
multisearchable :against => [:child_id, :child_forename]
给定的错误告诉你方法&#34; child_forename&#34;没有定义。这是因为ruby解释器从上到下读取文件,并且该方法尚未定义。但如果是的话,该线将评估为
multisearchable :against => [:child_id, "Mary"]
这可能不是你想要的。如果您正确传递了符号,则在实例化对象并对对象内容编制索引时,稍后会在某些on_update回调中调用具有该名称的方法。