[RUBY-ON-RAILS] 어떻게 Arel와 레일에서 LIKE 쿼리를 할까?
RUBY-ON-RAILS어떻게 Arel와 레일에서 LIKE 쿼리를 할까?
내가 좋아하는 뭔가를하고 싶지 :
SELECT * FROM USER WHERE NAME LIKE '%Smith%';
Arel 나의 시도 :
# params[:query] = 'Smith'
User.where("name like '%?%'", params[:query]).to_sql
그러나,이된다 :
SELECT * FROM USER WHERE NAME LIKE '%'Smith'%';
Arel 올바르게 쿼리 문자열 '스미스'래핑하지만, 이것은 LIKE 문이기 때문에 작업을 나던.
한 사람이 어떻게 Arel에서 LIKE 쿼리를합니까?
추신 보너스 - 나는 실제로 쿼리에 대한 일치가 있는지 확인하기 위해 테이블에 두 필드 모두 이름과 설명을 스캔하는 것을 시도하고있다. 어떻게 그 일이 것?
해결법
-
==============================
1.이것은 당신이 arel 쿼리와 같은을 수행하는 방법이다 :
이것은 당신이 arel 쿼리와 같은을 수행하는 방법이다 :
users = User.arel_table User.where(users[:name].matches("%#{user_name}%"))
추신:
users = User.arel_table query_string = "%#{params[query]}%" param_matches_string = ->(param){ users[param].matches(query_string) } User.where(param_matches_string.(:name)\ .or(param_matches_string.(:description)))
-
==============================
2.시험
시험
User.where("name like ?", "%#{params[:query]}%").to_sql
추신.
q = "%#{params[:query]}%" User.where("name like ? or description like ?", q, q).to_sql
Aaand는 오랜 시간이 지났지만 @ cgg5207 (당신이 긴 이름 또는 여러 장기 명명 된 매개 변수를 검색 할거야 또는 사용자가 입력하기에 너무 게으른 경우에 주로 유용) 수정 추가
q = "%#{params[:query]}%" User.where("name like :q or description like :q", :q => q).to_sql
또는
User.where("name like :q or description like :q", :q => "%#{params[:query]}%").to_sql
-
==============================
3.르우벤 Mallaby의 대답은 사용 매개 변수 바인딩에 더 단축 할 수있다 :
르우벤 Mallaby의 대답은 사용 매개 변수 바인딩에 더 단축 할 수있다 :
User.where("name like :kw or description like :kw", :kw=>"%#{params[:query]}%").to_sql
from https://stackoverflow.com/questions/4430578/how-to-do-a-like-query-in-arel-and-rails by cc-by-sa and MIT license
'RUBY-ON-RAILS' 카테고리의 다른 글
[RUBY-ON-RAILS] 3 레일 : "필드 - 오류가있는"페이지의 모양이 변경 래퍼. 어떻게 이것을 피하기 위해? (0) | 2020.02.05 |
---|---|
[RUBY-ON-RAILS] accepts_nested_attributes_for find_or_create와? (0) | 2020.02.05 |
[RUBY-ON-RAILS] 경고 : PATH에서 안전하지 않은 세계 쓰기 가능한 디렉토리 / usr / 지방 / 빈 모드 040777 (0) | 2020.02.05 |
[RUBY-ON-RAILS] 3 개 형태의 레일에 루비의 _snowman PARAM은 무엇인가? (0) | 2020.02.05 |
[RUBY-ON-RAILS] 레일에서 사용자 지정 구성 변수를 정의하는 방법 (0) | 2020.02.05 |