i o n M e s s a g e c l a s s < < s e l f d e f d e q u e ( & b l o c k ) p o l l e r . p o l l ( s k i p _ d e l e t e : t r u e ) d o | m s g | d a t a = O j . l o a d ( m s g . b o d y ) b e g i n y i e l d n e w ( d a t a ) p o l l e r . d e l e t e _ m e s s a g e ( m s g ) r e s c u e = > e R a i l s . l o g g e r . w a r n ( e ) e n d e n d e n d p r i v a t e d e f p o l l e r # o m i t e n d e n d e n d
l t = U s e r . l e f t _ o u t e r _ j o i n s ( p o s t s : : r a t e s ) . s e l e c t ( " C O U N T ( D I S T I N C T r a t e s . u s e r _ i d ) A S r a t e d _ u s e r s " , " I F ( r a t e s . u s e r _ i d I S N U L L , 0 , M I N ( r a t e s . r e v i e w ) ) A S m i n _ r e v i e w " , " M A X ( r a t e s . r e v i e w ) A S m a x _ r e v i e w " , " A V G ( r a t e s . r e v i e w ) A S a v g _ r e v i e w " , ) . g r o u p ( : i d ) . t a k e ! p r e s u l t . c l a s s # = > U s e r p r e s u l t . r a t e d _ u s e r s # = > レーティングした人の数 ただ、簡易なものに留めておくのが無難。 そして、出来るだけSQL そのものの構造に似せて書いた方が後々 剥がす時に楽。
U s e r . f i n d _ b y _ s q l ( [ < < ~ S Q L , a u t h o r i z e d : 1 ] ) S E L E C T C O U N T ( D I S T I N C T C A S E W H E N r a t e s . a u t h o r i z e d = : a u t h o r i z e d T H E N r a t e s . u s e r _ i d E L S E N U L L E N D ) A S r a t e d _ u s e r s , M I N ( r a t e s . r e v i e w ) A S m i n _ r e v i e w , M A X ( r a t e s . r e v i e w ) A S m a x _ r e v i e w , A V G ( r a t e s . r e v i e w ) A S a v g _ r e v i e w F R O M u s e r s L E F T O U T E R J O I N p o s t s O N u s e r s . i d = p o s t s . u s e r _ i d L E F T O U T E R J O I N r a t e s O N p o s t s . i d = r a t e s . p o s t _ i d S Q L
N T O a g g r e g a t e d _ s e s s i o n s S E L E C T D I S T I N C T i n s i g h t _ i d , u n i t , s t a r t e d _ a t , c u s t o m _ e v e n t _ i d , S U M ( C A S E W H E N p l a t f o r m I N ( ' i o s ' , ' a n d r o i d ' , ' w e b ' ) T H E N , S U M ( C A S E W H E N p l a t f o r m = ' i o s ' T H E N f r e q u e n c y E L S E 0 E N D , S U M ( C A S E W H E N p l a t f o r m = ' a n d r o i d ' T H E N f r e q u e n c y E L S E , S U M ( C A S E W H E N p l a t f o r m = ' w e b ' T H E N f r e q u e n c y E L S E 0 E N D F R O M ` a g g r e g a t e d _ s e s s i o n s _ < % = u n i t % > ` W H E R E d t > = ' < % = f r o m . s t r f t i m e ( " % Y % m % d " ) % > ' A N D d t < ' < % = t o . s t r f t i m e ( " % Y % m % d " ) % > ' A N D f i r s t _ a c c e s s = f a l s e G R O U P B Y i n s i g h t _ i d , u n i t , c o n v e r s i o n _ s t a r t e d _ a t , c u s t o m _ e v e n t _ i d
R e n d e r e r < O p e n S t r u c t d e f s e l f . r e n d e r ( t e m p l a t e _ f i l e , * * v a r i a b l e s ) n e w ( t e m p l a t e _ f i l e : t e m p l a t e _ f i l e , * * v a r i a b l e s ) . r e n d e r e n d d e f r e n d e r E R B . n e w ( F i l e . r e a d ( t e m p l a t e _ f i l e ) , n i l , " " ) . r e s u l t ( b i n d i n g ) e n d e n d r e s u l t = A c t i v e R e c o r d : : B a s e . c o n n e c t i o n . e x e c u t e ( Q u e r y R e n d e r e r . r e n d e r ( t e m p l a t e _ f i l e , { u n i t : " d a y " , f r o m : 1 . d a y . a g o , t o : T i m e . c u r r e n t } ) , )
l o w S a m p l e < R u k a w a : : J o b N e t d e f s e l f . d e p e n d e n c i e s { A g g r e g a t e d C l i p s D a y = > [ ] , C o n v e r s i o n F a c t s D a y = > [ A g g r e g a t e d C l i p s D a y ] , E x p o r t C o n v e r s i o n F a c t s D a y = > [ C o n v e r s i o n F a c t s D a y ] , C o p y C o n v e r s i o n F a c t s D a y = > [ E x p o r t C o n v e r s i o n F a c t s D a y ] , I m p o r t C o n v e r s i o n F a c t s D a y = > [ C o p y C o n v e r s i o n F a c t s D a y ] , R e t e n t i o n F a c t s D a y = > [ A g g r e g a t e d C l i p s D a y , C o n v e r s i o n F a c t s D a y ] , E x p o r t R e t e n t i o n F a c t s D a y = > [ R e t e n t i o n F a c t s D a y ] , C o p y R e t e n t i o n F a c t s D a y = > [ E x p o r t R e t e n t i o n F a c t s D a y ] , I m p o r t R e t e n t i o n F a c t s D a y = > [ C o p y R e t e n t i o n F a c t s D a y ] , } e n d e n d