2010-05-10 2 views
0

의 나는 다음과 같은 모델이 있다고 가정 해 봅시다 : 나는 searchlogic와 가상 속성에서 검색을 할 수있는 방법searchlogic 및 가상 속성

Person <AR 
def name 
    [self.first_name,self.middle_name,self.last_name].select{|n| n.present?}.join(' ') 
end 
end 

을, 무언가 같이 : 내가 만들 수 courese의

Person.search.name_like 'foo' 

큰 진술은 다음과 같습니다 :

Person.search.first_name_like_or_last_name_like_or_... 'argh' 

하지만 분명히 더 우아한 방법이 있습니다.

+0

Searchlogic 메서드로 작성해야하는 SQL은 무엇입니까? –

+0

죄송 합니다만, 나는 SQL이 좋지 않습니다. RoR과 플러그인 searchlogic 덕분에 절대로 필요하지 않았습니다. –

답변

2

Searchlogic은 기존 명명 된 범위와 결합 될 수 있으며 가상 속성의 경우에 사용해야합니다. 그 중 하나는 다음과 같습니다.

named_scope :name_like, lambda { |name| { :conditions => ['first_name LIKE ? OR last_name LIKE ? OR middle_name LIKE ?', "%#{name}%","%#{name}%","%#{name}%"] }}