2013-03-25 1 views
0

나는 기본적으로 3 개 필드를 가지고 프로젝트 모델ProjectAttribute 모델프로젝트에 대한 기록, 나는 아래의 접근 방법을 시도했지만 성공하지 못했습니다.

project.rb

class Project < ActiveRecord::Base 
    has_many :project_attributes 

    searchable do 
    text :title, :boost => 2 
    text :description 
    string :att_name, :multiple => true do 
     project_attributes.map { |p| p.name } 
    end 

    string :att_value, :multiple => true do 
     project_attributes.map { |p| p.value } 
    end 

    end 
end 

그 수 ProjectAttribute 필드을 사용하는 등의 3 개의 객실을 가진 모든 프로젝트를 얻는 Project.search에 기준?

예는 :

Project.search do 
    with(:att_name, 'rooms') 
    with(:att_value, '3') 
end 
+0

내 행운을 빕니다. nswer? – aguynamedloren

+0

안타깝게도 ActiveRecord 대신 Sunspot을 사용하고 싶습니다. 당신의 대답은 제가 지금 사용하고있는 것과 매우 흡사합니다. –

+0

어떤 종류의 원하지 않는 행동을 경험하고 있습니까? 검색을 실행할 때 오류가 있습니까? 잘못된 결과가 표시됩니까? 당신이 제공 한 코드가 옳았 기 때문에 나는 이것을 묻고있다. 이와 같은 쿼리 유형에 대해 Sunspot/Solr을 어떻게 사용할 것인지에 대한 자세한 정보를 제공하면 도움이 될 것입니다. 좀 더 적절할 Solr (패싯 사용과 같은)로 할 수있는 다른 일이있을 수 있습니다. – vanhowen

답변

-1

태양 흑점 필요 없음 - 당신은 기본 액티브 쿼리 및 범위와 함께이 작업을 수행 할 수 있습니다.

간단히 시작하자. 방이 3 개인 프로젝트를 찾고 싶을뿐입니다. 쿼리는 다음과 같습니다

Project.joins(:project_attributes).where("project_attributes.name = 'rooms' AND project_attributes.value = '3'") 

Project에 범위에 그 터닝 : 당신이 할 수

scope :search, lambda { |name, value| joins(:project_attributes).where("project_attributes.name = ? AND project_attributes.value = ?", name, value) } 

:

는하지만 물론 당신이 변수 입력을 수용 할
scope :search, joins(:project_attributes).where("project_attributes.name = 'rooms' AND project_attributes.value = '3'") 

:

Project.search("rooms","3")