pg_search跨铁路的多个模型?

时间:2016-01-18 21:17:00

标签: ruby-on-rails ruby postgresql ruby-on-rails-4 pg-search

我正在尝试使用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

如何构建此查询以索引子名称?

3 个答案:

答案 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搜索时遇到了一些问题。所以我做了自己的。看看这个。

How To Create A Search Function - Ruby On Rails

答案 2 :(得分:0)

您在child_forename前面缺少一个冒号。

您需要传递符号:

multisearchable :against => [:child_id, :child_forename]

给定的错误告诉你方法&#34; child_forename&#34;没有定义。这是因为ruby解释器从上到下读取文件,并且该方法尚未定义。但如果是的话,该线将评估为

multisearchable :against => [:child_id, "Mary"]

这可能不是你想要的。如果您正确传递了符号,则在实例化对象并对对象内容编制索引时,稍后会在某些on_update回调中调用具有该名称的方法。