2014-10-21 17 views
0

그래서 Ruby on Rails 앱의 검색 기능의 일부로 사용자가 이름과 성으로 검색 할 수있게 만들었습니다. 그러나 전체 이름을 입력하면 결과가 렌더링되지 않습니다. 따라서 사용자 이름이 John Smith 인 경우 "John"또는 "Smith"를 입력하면 해당 사용자가 표시되지만 John Smith를 입력하면 인식하지 못합니다.Ruby on Rails에서 검색을위한 연결

내 검색 코드에서 first_name과 last_name 만 사용할 수 있지만 사용자의 전체 이름은 사용하지 않았기 때문에 알 수 있습니다. 이 문제를 해결하기 위해 이름과 성을 연결하는 적절한 방법은 무엇입니까?

users = User.find_by_sql(['select * 
    from users 
    where first_name ilike ? 
    or last_name ilike ? 
    order by last_name limit ?', q, q, 100]) 
+0

당신은 그들이 "스미스 요"를 검색하면 일이 무엇을할까요? –

+0

그 생각을하지 않았다면 ... 아마 – Andrew

+0

이라고해도 John Smith를 표시하고 싶을 것입니다. ** def full_name ([first_name, last_name] - [ '']) compact.join ('') end ** – userden

답변

0

확인이 코드 p는 아무것도 John, Smith

users = User.find_by_sql(["SELECT * FROM users WHERE 
          CONCAT(first_name, ' ', last_name) LIKE ? 
          ORDER BY last_name LIMIT ?", p, 100] 
         ) 

,

users = User.find_by_sql(["SELECT * FROM users WHERE (coalesce(users.first_name, '') || ' ' || coalesce(users.last_name, '') ilike '%#{p.downcase}%')"]) 
+0

Debadatt에게 감사드립니다. 약간의 변경이 있었지만 답변이 효과적이었습니다! users = User.find_by_sql ([ "select * users from users where (coalesce (users.first_name, '') || ''|| coalesce (users.last_name, '')) ilike? last_name 제한으로 정렬 하시겠습니까? ", q, 100])' – Andrew

0

무엇 MySQL의 concat에 대한 :

여기에 현재 코드는? John Smith

+0

Salil, 답변 주셔서 감사합니다. 작동하지 않는 것 같습니다. ( – Andrew