2011-05-02 2 views
1

두 번째 이름과 이름을 확인하고 일치하는 사용자를 반환하는 내 사용자 모델에 간단한 검색 방법을 쓰려고합니다. 나는 순간이 있지만 오류가 발생합니다 :Rails3 : 둘째로 검색 사용자 이름?

def self.search(search) 
    if search 
     where("first_name like ? or second_name like ?", "%#{search}%") 
    else 
     all 
    end 
    end 

오류는 다음과 같습니다 wrong number of bind variables (1 for 2) in: first_name like ? or second_name like ?

가 어떻게이 문제를 해결할 수 있습니까? where 방법을 의미

감사

+0

내 생각에'def self.search (first, last)'가 필요하고'where' 절의 끝에 dohickey에 그 두 개를 넣으십시오. Rails를 실제로 알지는 못했지만 그것이 내가 시작할 부분입니다. – corsiKa

답변

3

당신은이 ?이 두 개의 인수를 기대하고있다 :

def self.search(search) 
    if search 
    where("first_name like ? or second_name like ?", "%#{search}%", "%#{search}%") 
    else 
    all 
    end 
end 

난 당신이 중복 대신 하나 개의 인수를 사용하는 like의를 간소화 할 수 있는지 확실하지 않습니다 이,하지만 당신은 최대 조금 청소 수 :

def self.search(search) 
    if search 
    q = "%#{search}%" 
    where("first_name like ? or second_name like ?", q, q) 
    else 
    all 
    end 
end 
+0

이 작동하지 않습니다, 나는 그것이 사실로 표시되어야한다고 생각하지 않습니다. – botbot

2

당신은

0을 사용할 수 있습니다
where("first name like :name or second name like :name", :name => "%foo%")