2016-07-24 16 views
0

イベントモデルで全文検索を作成しようとしています。 モデルには、国コードが格納されているcountry_codeフィールドが含まれています。 国名を直接入力して国別に検索できるようにするため、Fr.の代わりにフランスを考えてみましょう仮想属性を検索

私の範囲は次のようになります。

ActiveRecord::StatementInvalid: PG::UndefinedColumn: ERROR: column events.country does not exist.

私はどのように修正することができます:私は残念ながら私の検索範囲は、次のエラーが生成さ呼び出す国の法

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

を持って

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

この?

答えて

0

マイグレーションを正しく実行しましたか?あなたのデータベースには国のフィールドさえないので、それを検索することはできません。

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

また、モデルでテーブルを適切にリンクしていない可能性があります。すべての詳細がわからないのは難しいですが、これは魚のようです。column events.country

イベントは単数で、国はおそらくcolumn event.country_idのようなidフィールドにする必要があります。おそらくあなたのモデルでテーブルを正しく結合していないか、または移行で適切なIDフィールドが不足している可能性があります。

# models/events.rb 
has_one :country 

# models/country.rb 
belongs_to :event 

答えがわからない場合は、国とイベントの移行に関する詳細が必要です。

+0

ご返信ありがとうございます。 私のイベントモデルにはcountry_codeフィールドによる国フィールドがありません。 私はcountry_selectという宝石を使用していますので、完全な国名を保存する必要はなく、国ごとに別々のテーブルを用意する必要はありません。だから、私はcountry contry_codeフィールドしか持っていない。 countryメソッドの役割は、指定されたcountry_codeの国名を返すことです – user1445685