module Almicube::Model
Public Class Methods
included(base)
click to toggle source
# File lib/almicube/model.rb, line 5 def self.included(base) base.class_eval do class << self def ranking_with(ranker, options={}) ranker = ranker.to_s options = options.symbolize_keys!.merge(class_name: self, attribute_name: ranker.to_sym) @ranking_builders ||= {} @ranking_builders[ranker.to_sym] = Almicube::Builder.new options class_eval <<-EVAL def self.#{ranker}_ranking(date = Date.today) @rankings ||= {} @rankings[:"#{ranker}:\#{date.to_s}"] ||= @ranking_builders[:#{ranker}].data(date) end def #{ranker}_ranking(date = Date.today) Almicube::AssociationProxy.new(self.class.#{ranker}_ranking(date), self) end attr_accessor :current_ranking def #{ranker}_rank @current_ranking.rank(self) end def #{ranker}_score @current_ranking.score(self) end def #{ranker}_incr @current_ranking.incr(score) end EVAL end end end end
ranking_with(ranker, options={})
click to toggle source
# File lib/almicube/model.rb, line 9 def ranking_with(ranker, options={}) ranker = ranker.to_s options = options.symbolize_keys!.merge(class_name: self, attribute_name: ranker.to_sym) @ranking_builders ||= {} @ranking_builders[ranker.to_sym] = Almicube::Builder.new options class_eval <<-EVAL def self.#{ranker}_ranking(date = Date.today) @rankings ||= {} @rankings[:"#{ranker}:\#{date.to_s}"] ||= @ranking_builders[:#{ranker}].data(date) end def #{ranker}_ranking(date = Date.today) Almicube::AssociationProxy.new(self.class.#{ranker}_ranking(date), self) end attr_accessor :current_ranking def #{ranker}_rank @current_ranking.rank(self) end def #{ranker}_score @current_ranking.score(self) end def #{ranker}_incr @current_ranking.incr(score) end EVAL end