0
나는이 쿼리PostgreSQL의 액티브는
Person.where('email ~* ?', "(#{params['domains'][0]}|#{params['domains'][1]})")
내가 원하는 동작은 누구의 이메일 도메인을 하나 이상 포함 된 모든 사람을 반환하는 것입니다에게 있습니다. 내 params = {"domains"=>['gmail.com']}
gmail.com을 도메인의 일부로 갖는 모든 사람들 대신 모든 단일 레코드를받습니다.
Person.where('email ~* ?', "(#{params['domains'][0]}|nil)")
을 테스트 한 후이 nil
동일해야 params['domains'][1]
가없는 경우 내가 gmail.com
만 기록을 얻었다. 무슨 일이야? 는 SQL
SELECT COUNT(*) FROM "contacts" WHERE (full_name ~* '(jared|friedman)\s?\w?\s?(jared|friedman)') AND (email ~* '(gmail.com|)')
보고에서
는 문제가 (gmail.com|)
으로 보인다. nil이 전달되지 않음
도메인의 크기가 1 인 경우 조건부로 false를 삽입하여 일종의 해킹을 수행 할 수 있습니다. 그러나
params['domains'][1] = false if params['domains'].size < 2
그래로 변경 – Patrick