2013-03-11 2 views
0

Sunspot Solr을 사용하여 이벤트를 검색하고 각 이벤트는 Group 객체를 참조하는 group_id를 갖습니다 (여러 이벤트가 동일한 그룹을 가질 수 있음). 사용자가 그룹 이름을 검색하면 올바른 이벤트를 찾고 싶습니다. 검색 가능한 블록Sunspot 검색 has_one 연관, 다른 모델에 외래 키가 없음

string :events_group_name do 
    group.map(&:name) 
end 

오류

sqlite3를 ::하면 SQLException

시도 용액 : 이러한 컬럼 : groups.event_id :. "그룹"* "그룹" "기"FROM를 선택한다. "event_id"= 3 LIMIT 1

문제는 그룹에 event_id가 없기 때문에 어떻게 작동합니까? 이 문제를 해결하려면 그룹 이름을 Event 객체의 열로 저장하는 것이 좋지만 확실한 방법이 있습니다. 고맙습니다!

답변

0

나는 Sunspot에 대해 아무것도 몰라,하지만 당신의 모델이 잘못 매핑되었다고 생각합니다. 이 같은 관계가있는 경우 :

1 그룹 -> N 이벤트

을 당신은 has_many과 모델의 belongs_to를 사용해야합니다. has_one은 귀하의 경우에는 1로 협회 (1)와 함께 사용됩니다 :

class Group 
    has_many :events 
    #... 
end 

class Event 
    belongs_to :group 
    #... 
end 

레일즈 가이드 예제와 함께 액티브 레코드 협회에 대한 good article 있습니다. 당신은 그것을 볼 수 있습니다.

+1

감사합니다. 나는 그것을 알아 냈다. 먼저 우리가 그것을 당신의 제안 (어리석은 어리석은 나)에 따라 belongs_to로 바꾼 다음 검색 가능한 블록에 추가한다. text : group do group.name 그룹이 끝나면 (그룹이 nil인지 확인하기 위해) – Andy