Slide 27
Slide 27 text
use vendor speci c SQL
# -*- coding: utf-8 -*-
class Activity < ActiveRecord::Base
...
# ड͚औͬͨactivitiesΛɺpublication_idͷ͝ͱʹ࠷େ7݅ͣͭʹߜͬͯฦ͢
# [MySQLݶఆ]
def self.select_top_7_per_publication_id(activities)
# ࠷৽ͷ6+1݅(see moreΛදࣔ͢Δ͔Ͳ͏͔Λఆ͢ΔͨΊʹ͑ͯ1݅ଟΊʹऔಘ)
Activity.from(<<-SQL).where("activities.row_number <= #{DISPLAY_ACTIVITY_NUM + 1}")
(select *,
if(@previous_publication_id <> publication_id, @rownum := 1, @rownum := @rownum + 1) as
row_number,
@previous_publication_id := publication_id
from (#{activities.to_sql}) as a
cross join (select @rownum := NULL, @previous_publication_id := 0) as r
order by publication_id, id desc
) AS activities
SQL
end
...
end
ΩϞ͍
Monday, September 3, 12