2012-06-01 6 views
0

네, 거의 이와 비슷한 질문이 있지만 레일스 방식으로 대답 한 것 같지 않습니다. 너무 아파서 건조하지 않아요. Case-insensitive search in Rails model레일스 모델에서 대소 문자를 구별하지 않는 검색 ReWorded

이름을 기반으로 제품에 대한 내 postgresql 데이터베이스를 검색하고 싶습니다. 고객을 위해 동일한 데이터베이스를 검색하려고 할 수도 있습니다.

그래서 이전 질문에서 제안 사항을 사용합니다. 제품 테이블에 함수가 있습니다. Product.find_by_name #은 이전 답변에서와 똑같이 이름을 찾고 찾습니다.

마찬가지로 쉽습니다! 이제 고객은 어떻습니까?

Customer.find_by_contact_name 
Customer.find_by_email_address 
Customer.find_by_company_name 
Customer.find_by_phone 
Customer.find_by_contact_name_and_phone 
Customer.find_by_industry_id_and_contact_name #the insdustry_id is not text so it can't be found. 
# Ahh snot I forgot a few. 
Customer.find_by_contact_name_and_company_name 
Customer.find_by_contact_name_and_email_address 
Customer.find_by_contact_name_and_phone 
Customer.find_by_industry_id_and_email_address 
... 

이들 각각은 하드 코딩되어 있어야합니다. 다른 하나가 필요할 때 고객을 열고 코드를 복사하고 새로운 함수를 만들어야했습니다. 값이 정수 또는 문자열 또는 날짜인지 여부를 알지 못했기 때문입니다.

필자는 모든 모델에 대해이 기능을 구현하지 않아도되고 앞으로 어떤 시점에서 수행하고자하는 검색을 반복 할 필요가없는 방법을 찾고 있습니다.

다른 질문에 대한 답변을 주셔서 감사드립니다. 그들은 단지 "레일즈"처럼 보이지 않습니다. 그리고 저는 더 많은 것을 기대하고있었습니다. 교차 한 손가락, 4 개월 이상 된 사람은 나를 진짜 DRY로 안내 할 수 있습니다.

+0

과 같은 검색 엔진을 사용해보십시오. 어떤 질문을 언급하고 있습니까? (도움이 될 수도 있습니다) –

+0

다른 "동일"질문에 대한 링크가 추가되었습니다 – baash05

+0

체크 아웃을 원할 수도 있습니다 - https://github.com/ernie/ransack - 그리고 이들 중 일부를 살펴 보시겠습니까? http://railscasts.com/?tag_id=30 - 만약 당신이 자신 만의 역할을 맡기를 원한다면 AREL을 사용하는 경향이 있습니다. 여기서 params [: company_name]은 구문'Customer.where ("company_name ILIKE?", params [: company_name] .present?' – house9

답변

관련 문제