2011-11-30 3 views
6

RABL을 사용하여 Sunspot/SOLR 결과 집합을 출력하고 검색 결과 개체가 여러 모델 유형으로 구성됩니다. 현재 rabl보기 내에서 :Rabl 다중 모델 모음

object false 

child @search.results => :results do 
    attribute :id, :resource, :upccode 
    attribute :display_description => :description 

    code :start_date do |r| 
    r.utc_start_date.to_i 
    end 

    code :end_date do |r| 
    r.utc_end_date.to_i 
    end 

end 

child @search => :stats do 
    attribute :total 
end 

위의 단일 모델에 대해 작동합니다; 그러나 여러 모델 유형이 @ search.results 컬렉션 내에 있으면 두 클래스 모두 동일한 인스턴스 메서드가 없으므로 실패합니다. 누구든지 유형에 따라 다른 속성을 갖는 방법을 알고 있습니까? 궁극적으로 개체 유형에 따라 결과 컬렉션에서 다른 템플릿을 조건부로 확장하는 것이 좋습니다. 아래 의사 코드 비슷해 : 당신은 완전히 '최악'의 경우에 '노드'와 모든 권한을 가지고이 문제를 방지 할 수

child @search.results => :results do |r| 
    if r.class == Product 
    extends "product/base" 
    else 
    extends "some other class base" 
    end 
end 

답변

7

:

node :results do 
    @search.results.map do |r| 
    if r.is_a?(Product) 
     partial("product/base", :object => r) 
    else # render other base class 
     partial("other/base", :object => r) 
    end 
    end 
end 

는 도움을합니까?

+0

감사합니다. Nathan - 완벽하게 작동했습니다! 정말 도움을 주시면 감사하겠습니다. – ejlevin1

+0

감사합니다.이게 정말 도움이되었습니다. –