搜索虚拟属性

时间:2016-07-24 22:29:01

标签: ruby-on-rails pg-search

我试图在Event模型上创建全文搜索。 该模型包含country_code字段,其中存储国家代码; 我希望能够通过输入国家名称直接按国家/地区进行搜索,让我们说法国代替Fr.

我的范围如下:

pg_search_scope :full_search, against: [:name, :city, :country], associated_against: {
    event_type: [:name],
    dance_types: [:name]
  }

我有一个国家/地区方法

def country
  return '' if country_code.blank?
  country = ISO3166::Country[country_code]
  (country.translations[I18n.locale.to_s] || country.name) unless country.nil?
end

不幸的是,调用我的搜索范围会产生以下错误:

  

ActiveRecord :: StatementInvalid:PG :: UndefinedColumn:ERROR:列   events.country不存在。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

您是否正确运行迁移?您的数据库似乎甚至没有国家/地区字段,因此难怪它无法搜索它。

$ rake db:migrate VERSION=0
$ rake db:migrate

您也可能没有在模型中正确链接表格。没有所有细节很难说,但这看起来很可疑column events.country

事件应该是单一的,而country应该是column event.country_id之类的id字段。也许您还没有在模型中正确加入表格,或者您的迁移可能缺少正确的ID字段。

# models/events.rb
has_one :country

# models/country.rb
belongs_to :event

如果这不是答案,我们需要有关您的国家/地区和活动迁移的更多信息。