class Almicube::Ranking::DataRanking
Constants
- KEY_PATTERN
Public Class Methods
default_options()
click to toggle source
# File lib/almicube/ranking/data_ranking.rb, line 8 def default_options { attribute_name: :score, prefix: 'ranking', suffix: '', distinction: '%{date}', date_format: '%Y%m%d', date: Date.today, per_page: 10, as: Float, default_score: 0, class_name: nil } end
new(options={})
click to toggle source
Calls superclass method
Almicube::Ranking::Base::new
# File lib/almicube/ranking/data_ranking.rb, line 22 def initialize(options={}) @options = self.class.default_options.merge options.symbolize_keys raise TypeError, ":as option is only allowed Integer or Float" unless [Integer, Float].include? @options[:as] super(@options) @selector ||= Selector::AllSelector.new self.options @options.delete(:selector) @selector.ranking = self @options[:aggregator] ||= Aggregator::SumAggregator.new @options[:aggregator].ranking = self end
Public Instance Methods
attribute_name()
click to toggle source
# File lib/almicube/ranking/data_ranking.rb, line 47 def attribute_name @options.fetch(:attribute_name, :score).to_s.to_sym end
data?()
click to toggle source
# File lib/almicube/ranking/data_ranking.rb, line 75 def data? selector.data_provider? end
data_key()
click to toggle source
# File lib/almicube/ranking/data_ranking.rb, line 43 def data_key Almicube::Key.new self, @options.merge( type: :data ) end
date()
click to toggle source
# File lib/almicube/ranking/data_ranking.rb, line 51 def date @options.fetch(:date, Date.today) end
default_score()
click to toggle source
# File lib/almicube/ranking/data_ranking.rb, line 83 def default_score @options.fetch(:default_score, 0) end
exists?()
click to toggle source
# File lib/almicube/ranking/data_ranking.rb, line 79 def exists? connection.exists key end
in(target)
click to toggle source
# File lib/almicube/ranking/data_ranking.rb, line 55 def in(target) association_name = class_name.to_s.underscore.pluralize if ( target.class != class_name ) && target.respond_to?(association_name) _selector = Selector::HasManySelector.new target: target, association_name: association_name _selector.ranking = self return SubRanking.new self, selector: _selector end self end
key(options={})
click to toggle source
# File lib/almicube/ranking/data_ranking.rb, line 39 def key(options={}) Almicube::Key.new self, options.merge( type: :data ) end
options()
click to toggle source
# File lib/almicube/ranking/data_ranking.rb, line 71 def options @options.select{ |k| k != :type }.merge({ selector: selector, aggregator: aggregator }) end
ranged(name)
click to toggle source
# File lib/almicube/ranking/data_ranking.rb, line 67 def ranged(name) SubRanking.new(self).ranged(name) end