우리는 클라이언트에 대한 통계를 계산 중입니다. 통계는 각 SpecialtyLevel
에 대해 계산되며 각 통계에는 많은 오류 플래그가있을 수 있습니다 (유효성 검사 오류와 혼동해서는 안 됨). 각 Stat
와 하나 개의 컬럼계산 된 열을 사용하여 조인 된 결과 매기기
class SpecialtyLevel < ActiveRecord::Base
has_many :stats,
:class_name =>"Specialties::Aggregate::Stat",
:foreign_key => "specialty_level_id"
.......
end
class Stat < Surveys::Stat
belongs_to :specialty_level
has_many :stat_flags,
:class_name => "Surveys::PhysicianCompensation::Stats::Specialties::Aggregate::StatFlag",
:foreign_key => "stat_id"
......
end
class StatFlag < Surveys::Stats::StatFlag
belongs_to :stat, :class_name => "Surveys::PhysicianCompensation::Stats::Specialties::Aggregate::Stat"
......
end
, 우리는 각 SpecialtyLevel
대해 하나 개의 행을 표시 한 다음은 관계 (I은 간략화를 위해 생략 한 다음 다수의 모듈 내에 중첩되는 모든 클래스)이다 SpecialtyLevel
에 대한 오류 플래그가 있는지 여부를 나타내는 또 다른 열입니다. 클라이언트는 오류 플래그의 수로 테이블을 정렬 할 수 있기를 원합니다. 이를 위해, 나는 SpecialtyLevel
클래스의 범위를 만들었습니다
scope :with_flag_counts,
select("#{self.columns_with_table_name.join(', ')}, count(stat_flags.id) as stat_flags_count").
joins("INNER JOIN #{Specialties::Aggregate::Stat.table_name} stats on stats.specialty_level_id = #{self.table_name}.id
LEFT OUTER JOIN #{Specialties::Aggregate::StatFlag.table_name} stat_flags on stat_flags.stat_id = stats.id"
).
group(self.columns_with_table_name.join(', '))
지금 데이터베이스에서 반환 된 각 행은 그 내가 할 수있는 일종의하여
stat_flags_count
필드가됩니다. 이것은 잘 작동하지만 나는이 코드를 사용하여 페이지를 매기하려고 할 때 문제로 실행 : 어떤 이유
def always_show_results_count_will_paginate objects, options = {}
if objects.total_entries <= objects.per_page
content_tag(:div, content_tag(:span, "Showing 0-#{objects.total_entries} of #{objects.total_entries}", :class => 'info-text'))
else
sc_will_paginate objects, options = {}
end
end
, 내 범위에서 뭔가에 정말 펑키 물건을 할 레일을 일으키는 것으로 보인다 objects.total_entries
반환 1. 결과 세트는 나에게 준다.
질문은 올바른 값을 반환하는 데 사용할 수있는 또 다른 방법이 있습니까? 아니면이 간섭이 일어나지 않도록 범위를 조정할 수있는 방법이 있습니까?
을하지만 어떻게 것이라고 나는 일종의 가상 속성에 의해? 정렬은 데이터베이스 수준에서 발생합니다. – Samo
무엇이 반환되는지에 대해서는 올바른 행을 리턴합니다. 확실합니다. – Samo