Q
레일 쿼리
-1
A
답변
2
joins
깊은 여러 수준을 사용할 수 있습니다, 예를 들어 그 활동 캐리어 Activity.joins (에 속하는 : 캐리어 => {: 프로젝트 => {: 클라이언트 => : 역할}})
당신이 당신의 조건을 추가 할 수있는
SELECT * from activities
JOIN carriers on activities.carrier_id = carriers.id
JOIN projects on carriers.id = projects.carrier_id
JOIN clients on projects.client_id = clients.id
JOIN roles on roles.client_id = clients.id
의 라인을 따라 SQL을 생성합니다. 열 이름을 정규화해야합니다. 즉, id
대신 projects.id
을 사용하여 데이터베이스에 원하는 id
을 알 수 있습니다.
0
귀하의 솔루션은 충분합니다. 어쩌면 당신은 이런 식으로 개선 할 수 있습니다
clients = Client.joins(:roles).where("roles.name in ('responsible', 'replacement')")
client_ids = clients.map(:&id)
projects = Project.where('id in (?) && start=? && stop=?',client_ids,params[:start_time],params[:end_time])
project_ids = projects.map(:&id)
carriers = Carrier.joins(:projects).where('projects.id in (?) AND carriers.has_clients=1', project_ids)
carrier_ids = carriers.map(&:id)
activities = Activity.joins(:carriers).where('carriers.id in (?)', carrier_ids)
관련 문제
- 1. 레일 쿼리
- 2. 레일 HABTM 쿼리
- 3. SQL에서 레일 모델 쿼리
- 4. 레일 액티브 레코드 쿼리 :
- 5. 레일 용 ActiveRecord 쿼리
- 6. 레일 중첩 된 쿼리
- 7. 레일 컨트롤러 쿼리
- 8. 레일, 모듈, 쿼리 및나요?
- 9. 레일 쿼리 속도
- 10. 레일 3 고급 쿼리
- 11. 레일 협회 쿼리
- 12. 표준 SQL 쿼리 (레일)
- 13. 레일 및 named_scope 쿼리
- 14. 레일 어디 쿼리 결과에
- 15. 레일 연관을 통한 쿼리
- 16. 레일 MySQL 쿼리 시간 혼동
- 17. 두 번 사이의 레일 쿼리
- 18. 레일 쿼리 도움말 내 컨트롤러에서
- 19. 레일 3 : 무한 SQL 쿼리?
- 20. 복잡한 MySQL 쿼리 in 레일
- 21. 레일 3 리팩토링 ActiveRecord 쿼리
- 22. 레일 3.2.2 SQL 쿼리 빌더
- 23. 액티브 쿼리, 조인 (레일 3.1)
- 24. 레일 - 검색 쿼리/결과 저장
- 25. SQL 쿼리 내 레일 콘솔에서 다음 줄을 실행하려고 레일 콘솔
- 26. 레일 SQL 쿼리 빌더 ... 또는 액티브 쿼리 빌더
- 27. 레일 쿼리 HMTH를 사용하여 여러 모델
- 28. 레일 3 + 종이 클립 : N + 1 쿼리
- 29. 레일 3 : MongoDB에서 쿼리 캐시를 구현하는 방법
- 30. 쿼리 관련 has_many 모델 레일 3
좀 더 나은 것을 얻으 려 노력할 수 있습니까? – simonmorley
simonmorley 내 질문을 업데이트했습니다. 문의 사항이 있으면 알려주세요. –
나는 아직도 너를 정말로 이해하지 못한다. 이 railscasts 중 하나를 본 적이 있습니까? http://railscasts.com/episodes/202-active-record-queries-in-rails-3 – simonmorley