내 초기 검색 블록 내 사용자 모델의 모습입니다 :Sunspot/Solr을 사용하여 has_many 연관을 검색하는 방법은 무엇입니까? 여기
searchable do
text :name
integer :sport_ids, multiple: true do
sports.map(&:id)
end
integer :position_ids, multiple: true do
positions.map(&:id)
end
integer :city_id
integer :school_id
string :state
end
가 어떻게 has_many 협회에 의해 검색하나요? 스포츠 또는 스포츠 포지션에서 지정된 ID를 가진 각 선수에게 반환해야합니다. 따라서 누군가가 드롭 다운에서 "Basketball"을 선택하면 2의 ID가 내 검색 방법으로 전달되고 sport_id 컬렉션에 2의 sport_id를 가진 선수를 반환해야합니다. 여기에 스포츠와 sport_positions가 사용자 모델에 선언하는 방법입니다 : has_many :user_sports
이 ::: 편집 :::
이 잠시 일
has_and_belongs_to_many :positions, :class_name => "SportPosition", :join_table => "user_sport_positions", :uniq => true
has_many :sports, :through => :user_sports, order: "user_sports.created_at", class_name: "Sport"
다시 색인을 생성 한 후 갑자기이 오류가 발생하기 시작했습니다.
,Sunspot::UnrecognizedFieldError (No field configured for Athlete with name 'sport_ids'):
app/models/search.rb:12:in `block in execute'
여기 내 검색 모델 :
class Search < ActiveRecord::Base
attr_accessible :coach_id, :sport_id, :gpa_min, :gpa_max, :sport_position_id,
:classification, :city_id, :state, :school_id, :athlete_name
belongs_to :coach
def self.execute(params, page = nil)
Sunspot.search(Athlete) do |query|
query.with :public, true
query.with :removed_from_listing, false
query.fulltext params[:athlete_name] unless params[:athlete_name].blank?
query.with :sport_ids, params[:sport_id] unless params[:sport_id].blank?
query.with :position_ids, params[:sport_position_id] unless params[:sport_position_id].blank?
query.with(:state).equal_to(params[:state]) unless params[:state].blank?
query.with(:classification).equal_to(params[:classification]) unless params[:classification].blank?
query.with :city_id, params[:city_id] unless params[:city_id].blank?
query.with :school_id, params[:school_id] unless params[:school_id].blank?
query.with(:current_gpa).between(params[:gpa_min]..params[:gpa_max]) unless params[:gpa_min].eql?("0.0") && params[:gpa_max].eql?("5.0")
query.paginate page: page unless page.blank?
end
end
end
참고 :는 정수 속성입니다이 더 이상, 나는 필드가 불렀다 "recruit_year"를 확인합니다. 이 필드에서 "No field configured"라고 말하는 것과 같은 오류가 나타납니다. 그 오류는 보통 equal_to와 같은 비교를 시도하거나 string
처럼 취급하는 경우에만 text
필드에서만 발생합니다.
도움 말?