나는 가면서 배우기도하지만 이걸 이해할 수는 없다. 현재 내 검색어는 모두 MyObject.find(various conditions)
입니다. 이는 MyObject
의 배열을 반환하며 대부분의 용도로 충분합니다. 하지만 지금은 select name, count(*) from MyObjects group by name order by 2
과 같은 검색어로 가장 인기있는 항목의 목록을 만들고 싶습니다. 그것은 임의의 데이터 열을 반환 할 것이므로 MyObject
을 반환하지 않습니다. 그러면 어떻게해야합니까? 당신은 항상 할 수Ruby on Rails에서 임의의 SQL 쿼리를 작성하려면 어떻게해야합니까?
답변
:
MyObject.find_by_sql('query....')
하지만 일반적으로 더 나은 방법이 있습니다.
MyObject.find_by_sql을 사용하면 문제를 해결할 수 있습니다. select 문에서 사용하는 추가 열은 반환 된 객체를 통해 평소와 같이 액세스 할 수 있습니다. 예 :
MyModelName.find_by_sql("select coulmn1, column2 as somenewname,
column3 as someothername from....")
이렇게하면 somenewname 및 someothername이라는 속성이 각각있는 객체가 반환됩니다.
find_by_sql 메소드에 대한 자세한 내용은 설명서를 참조하십시오.
results = MyObject.select('name, count(*) as how_many')
.group(:name)
.order(:how_many)
# And later...
results.each do |o|
puts "#{o.name} has #{o.how_many}"
end
은 그래서 당신은 SQL에 의존 할 필요가 없습니다 :
그리고 고마워, 그게 내가 찾던 줄 알았지 만, find_by_sql이 내 목적에 맞는 것 같아. – Kundan
당신은 표준 액티브 쿼리 인터페이스를 통해 그 같은 간단한 일을 할 수 있습니다.
SQL 쿼리를 사용하여 SQL 쿼리를 기반으로 모델 개체 집합을 인스턴스화하려는 경우 다른 사람이 언급 한 것처럼 find_by_sql
도 있습니다.
여러 테이블의 데이터를 수집하거나 AR이 좋지 않은 (subselects, derived table ... 등) SQL 쿼리가있는 경우 ActiveRecord를 밀어 넣고 직접 대화 할 수 있습니다 데이터베이스 : 또한 당신이 바로 JSON (또는 유사) 데이터의 큰 더미를 인코딩하는 경우 유용하고, 액티브의 미묘한 필요가 없으며 처리를 지불하지 않을 수 select_rows
를 사용
connection.select_rows('some big pile of sql').each do |r|
# r will be an array of strings so you have to pull
# it apart and sort out the types by hand
end
ActiveRecord를 사용하여 오버 헤드.
당신은 액티브 레코드와 해 드리겠습니다 같은 소리 ORM 방향
MyObject.select(:name, "count(*) as count").group(...).order(...)
- 1. Ruby on Rails에서이 쿼리를 효율적으로 작성하려면 어떻게해야합니까?
- 2. Ruby on Rails에서 MongoDB를 사용하려면 어떻게해야합니까?
- 3. Ruby on Rails에서 서브 컨트롤러를 사용하려면 어떻게해야합니까?
- 4. Ruby on Rails에서 데이터베이스에 배열을 유지하려면 어떻게해야합니까?
- 5. Ruby On Rails에서 검색
- 6. Ruby on Rails에서 마이그레이션 사용
- 7. 간단하고 우아한 방법으로 SQL 쿼리를 작성하려면 어떻게해야합니까?
- 8. Ruby On Rails에서 협회 관리하기
- 9. Partitioned SQL 테이블에 대한 쿼리를 작성하려면 어떻게해야합니까?
- 10. 이 결과에서 SQL 쿼리를 작성하려면 어떻게해야합니까?
- 11. 이 SQL SELECT 쿼리를 작성하려면 어떻게해야합니까?
- 12. Ruby on Rails에서 연관성 선언하기
- 13. DBIX :: Class로이 쿼리를 작성하려면 어떻게해야합니까?
- 14. 관련 기사 Ruby on Rails에서
- 15. Ruby on Rails에서 qTip2 사용
- 16. Ruby on Rails에서 마법사 만들기
- 17. Ruby on Rails에서 I18n 제출하기
- 18. Ruby on Rails에서 문자열 인코딩
- 19. Ruby on Rails에서 angular.js의 보안
- 20. Ruby on Rails에서 텍스트 검색
- 21. Ruby on Rails에서 테이블 생성
- 22. Ruby on Rails에서 오류가 발생했습니다.
- 23. ruby on rails에서 그릿 사용하기
- 24. Ruby on Rails에서 일괄 다운로드
- 25. ruby on rails에서 uploadify 사용
- 26. Voltb는 Ruby on Rails에서 지원됩니까?
- 27. Ruby on Rails에서 Javascript 사용
- 28. ruby-on-rails에서 페이지 매기기
- 29. Ruby on Rails에서 리소스 편집하기
- 30. Ruby on Rails에서 텍스트를 자르십시오
을 시도 할 수 있습니다. 조금 더 명확 할 수 있습니까? – Calvin