我在rails模型中有以下内容(模糊名称和我的工作简化):
Show < ActiveRecord::Base
has_many :airings
end
Airing < ActiveRecord::Base
has_many :viewers
#a DateTime
def start_time
super
end
end
Viewer < ActiveRecord::Base
has_many :ratings
end
Rating < ActiveRecord::Base
end
我需要在每次显示开始时间时分配每个显示日期,然后获取一些数据:一个月中每个显示日期的观看者数量,一个月中每个节目日期的评分数量。我想使用groupdate gem按日期分组。
我已经走到这一步了:
scope :by_start_time, -> {
joins(
"inner join airings st on shows.id = st.show_id",
airings: {viewers: :ratings}
).where("st.id in (?)",
ShowTime.group("st.show_id"
).having("st.start_time = MIN(st.start_time)").select("st.id"
)).select(
"shows.*, st.start_time, st.start_time as show_start"
).distinct