2016-07-24 4 views
0

이벤트 모델에서 전체 텍스트 검색을 만들려고합니다. 모델에 국가 코드가 저장된 country_code 필드가 있습니다. 국가 이름을 입력하여 국가별로 직접 검색 할 수 있기를 원합니다. Fr. 대신 프랑스를 예로 들어 보겠습니다.가상 속성 검색

내 범위는 다음과 같습니다

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

는 어떻게 해결할 수 :

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 

다음과 같은 오류가 발생 국가 방법이 이?

답변

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