필자는 두개의 비슷한 테이블을 message와 message_histories로 명명했다. 주기적으로 메시지 테이블에서 이전 데이터를 제거하고 message_histories에 삭제합니다.여러 ActiveRecord 쿼리를 레일에 병합하고 레코드를 페이지 매기기하는 방법은 무엇입니까?
이제 message 및 message_history 테이블에있는 app_id로 그룹화 된 메시지 수에 대한 보고서를 생성하려고합니다.
조회 할 수있는 방법 [메시지 & MessageHistory] 모델과 기록에 쪽수를 매기다가있다.
현재 나는 다음 단계는, 그것은 이상한 보인다 사용하지만이 작업을 수행 할 수있는 더 좋은 방법 제안 : 당신이 원하는 것은 UNION
두 테이블에있는 것처럼 그것은 소리
@messages = Message.select("SUM(devices_count) as count ,CAST(run_at AS DATE) AS date").where(:app_id => @app.id).where("last_run_date is not ?", nil).group("CAST(run_at AS DATE)").order("date desc")
@messages << MessageHistory.select("SUM(devices_count) as count ,CAST(run_at AS DATE) AS date").where(:app_id => @app.id).where("last_run_date is not ?", nil).group("CAST(run_at AS DATE)").order("date desc")
@messages = @messages.flatten.paginate(:page => params[:page] || 1, :per_page => 100)
이 레일 방식을 사용하는 깔끔한 방법을 알지 못하지만 'ActiveRecord :: Base.connection.execute()'로 가서 두 테이블 모두에 대해 쿼리를 실행할 수 있습니다. –
메시지에 대해'polymorphic association'과 같은 작업을 수행 할 수 있습니다 역사는 메시지의 한 형태입니다. 메시지 히스토리를위한 두 번째 테이블 필요 없음 –