Rails 4는 OR 쿼리를 지원합니까?
따라서 Rails 4에는 오랫동안 원하는 not쿼리 사용 기능 이 추가되었습니다.
Article.where.not(title: 'Rails 3')
or쿼리 에 대한 유사한 지원이 추가 되었거나 만들 계획입니다. 릴리스 정보를 검색해도 아무것도 찾을 수 없습니다.
분명히 나는 시도했다
Article.where(title: 'Rails 3').or(title: 'Rails 4')
그러나 그것은 작동하지 않습니다.
Article.where(title: ['Rails 3', 'Rails 4']) Active Record에서하는 방법입니다.
"Rails-y"구문을 사용하여 임의의 SQL 쿼리를 복제 할 수 없습니다. 그러나 항상 리터럴 SQL로 전달할 수 있습니다.
따라서 다음을 수행 할 수도 있습니다.
Article.where("articles.title = 'Rails 3' OR articles.title = 'Rails 4'")
이제 Rails 5에서 작동합니다.
Article.where(title: 'Rails 3').or(Article.where(title: 'Rails 4'))
가장 일반적인 대안은 이미 @gregates의 답변입니다.
최근에 레일 소스에서 풀 리퀘스트가있었습니다.
#any_ofactiverecord에 추가하거나 기능을 수행하는 쿼리 메소드를 active_record에 추가하십시오.
기여자가 승인되지 않은 경우를 대비하여 이미 gem을 생성했습니다.
레일 3.2 및 4 호환
https://github.com/oelmekki/activerecord_any_of
나는 아직 그것을 시도하지 않았지만 곧 사용하고 싶습니다.
이것이 오래된 스레드라는 것을 알고 있지만이 문제에 대한 해결책을 찾는 다른 사람은이 코드가 도움이 될 수 있습니다.
Article.where(title: ["Rails 3", "Rails 4"])
SQL 주입 위험없이 누군가가 올바른 방향으로 나아가는 데 도움이 될 수 있습니다.
레일스 마스터 브랜치가 이제 OR 쿼리를 지원하는 것 같습니다. https://github.com/rails/rails/pull/16052
나는 그것이 다음 주요 릴리스의 프레임 워크에있을 것이라고 가정합니다.
Rails 5는이를 지원하지만 Rails 4.2에이 백 포트를 사용할 수 있습니다 : https://github.com/Eric-Guo/where-or
더 복잡한 쿼리에 Squeel 을 사용할 수 있습니다 .
Article.where{(title == 'Rails 3') | (title == 'Rails 4')}
그 결과 다음 SQL 쿼리가 생성됩니다.
SELECT `articles`.* FROM `articles` WHERE ((`articles`.`title` = 'Rails 3' OR `articles`.`title` = 'Rails 4'))
참고 URL : https://stackoverflow.com/questions/17192829/does-rails-4-have-support-for-or-queries
'Program Club' 카테고리의 다른 글
| postInvalidate ()는 무엇을합니까? (0) | 2020.11.26 |
|---|---|
| Rails : csrf_meta_tag는 어떻게 작동합니까? (0) | 2020.11.26 |
| 파이썬에서 부호있는 정수를 부호없는 정수로 변환하는 방법 (0) | 2020.11.26 |
| 항목을 눌렀을 때 탐색 창을 닫는 방법은 무엇입니까? (0) | 2020.11.25 |
| YouTube iframe 삽입-전체 화면 (0) | 2020.11.25 |