반응형
Rails : 특정 문자열을 포함하는 필드를 찾는 방법
필드 이름이있는 Topic이라는 모델이 있습니다.
그래서 제가 찾고있는 용어가 있다고합시다.
내가 할 경우
Topic.find_by_name("apple")
나는 사과라는 이름으로 기록을 되찾았다. 좋습니다. 그러나 "apple juice"및 "apple"을 찾을 수 있도록 find_by_name을 변경하려면 어떻게해야합니까? 기본적으로 원래 쿼리를 포함하거나 원래 쿼리와 정확히 일치하는 이름을 찾습니까?
편집 : 모든 응답에 감사드립니다. 이전에 좀 더 명확 했어야했는데 변수 이름으로 찾으려면 어떻게해야합니까 (분명히 "apple"이라는 이름으로 매번 찾고 싶지는 않을 것입니다. :))?
이를 수용하기 위해 Topic.where를 어떻게 조작합니까? 그래서 ...
@topic = Topic.where(......., @name)
나는 이와 같은 것이 효과가 있다고 생각합니다.
Topic.where("name like ?", "%apple%")
편집을 수용하려면 :
Topic.where("name like ?", "%#{@search}%")
기본 문자열 보간, 문자열 @search
내부의 값을 사용 %%
하므로 @search = "apple"
다음으로 끝납니다.%apple%
Rails 3에서 다음 과 같은 위치를 사용하려는 것 같습니다.
Topic.where("name ILIKE ?", "%apple%")
그렇게 직접 문자열을 넣지 마십시오. SQL 주입이라고합니다. 대신 다음을 사용해야합니다 .where
.
Topic.where("name like '?%' ", params[:name])
PostgreSQL을 사용하면 일치 연산자 를 사용할 수도 있습니다 .
Topic.where("name ~* ?", @search)
시험
Topic.where("name like ?",'%apple%')
Topic.find(:all, :conditions => ["name like ?","%apple%"])
참고 URL : https://stackoverflow.com/questions/9708409/rails-how-to-find-by-a-field-tained-a-certain-string
반응형
'Nice programing' 카테고리의 다른 글
macosx에서 python matplotlib 프레임 워크? (0) | 2020.12.10 |
---|---|
JOptionPane 예 / 아니요 옵션 확인 대화 상자 문제 (0) | 2020.12.10 |
동적 컬렉션과 함께 LINQ를 사용하는 방법 (0) | 2020.12.10 |
Ubuntu 14.04에서 1.8에서 1.9로 Ugrade tmux (0) | 2020.12.10 |
Visual Studio 2013 설치 실패 : 프로그램 호환성 모드가 켜져 있음 (Windows 10) (0) | 2020.12.10 |