Nice programing

Rails : 특정 문자열을 포함하는 필드를 찾는 방법

nicepro 2020. 12. 10. 21:08
반응형

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

반응형