2016-10-27 1 views
1

몇 시간을 StackOverflow를 통과하여이 쿼리로 재생했지만 아직 작동하지 않습니다! 잘하면 여기에 전문가가 고통을 사라지게 만들 수 있습니다 ...레일스 - 관련 이벤트 인스턴스의 시작 날짜순으로 정렬 된 고유 이벤트 가져 오기

두 가지 모델, Event 및 EventInstance 있습니다. 이벤트 has_many EventInstances. 내가 원하는 무엇

는 이벤트 (하지 EventInstances)의 목록을 얻을 쉽게입니다 :

  • 이벤트 독특하고
  • 이벤트가 가장 가까운 EventInstance의 시작일으로 분류되어 반복하지를
  • 이벤트 인스턴스는 속성이 있습니다
을 반환 미래의 시작 날짜를 활성화 => 진정한
  • 만 이벤트 인스턴스를

    나는 현재 쿼리

    Event.joins(:event_instances).select('distinct events.*').where('event_instances.start_date >= ?', Time.now).where('event_instances.active = true') 
    

    이 이벤트의 목록을 반환을 가지고 있지만 날짜별로 정렬되지 않습니다. 우수 - 그래서 거의 다 왔어! 나는 끝에이 추가 쿼리를 변경하는 경우

    는 :

    PG::InvalidColumnReference: ERROR: for SELECT DISTINCT, ORDER BY expressions must appear in select list 
    

    그래서 내가 select 문으로 이동 :

    select('distinct event_instances.start_date, events.*') 
    

    .order('event_instances.start_date') 
    

    나는 오류

    이제 알겠습니다.

    PG::UndefinedFunction: ERROR: function count(date, events) does not exist 
    

    include를 사용하여 주위를 움직이는 방법을 시도했지만 모든 기능을 사용할 수는 없습니다. 어떤 도움이라도 정말 감사 할 것입니다! 고맙습니다. 당신이 하강해야하는 경우

  • +0

    두 모델 모두의 필드를 언급 해 주실 수 있습니까? –

    답변

    0

    시도 변경

    .order('event_instances.start_date') 
    

    .order(:event_instances.start_date) 
    

    또는 순서는 쿼리

    0

    이 근무 정확한 쿼리입니다 끝에 .reverse_order 방법을 추가 내 MySQL과 PostgreSQL 모두 Post와 PostComments 모델 :
    Post.joins(:post_comments).select('distinct post_comments.body, post_comments.created_at').order('post_comments.created_at desc') 그래서 당신에게 그것은 동등한 것이어야합니다. 그래도 문제가 해결되지 않으면 게시물을 모델의 필드로 업데이트하십시오.

    관련 문제