class ElegantLeaderboard::Argument

Attributes

around_limit[R]
column_name[R]
model_klass[R]
sort_order[R]

Public Class Methods

new(args = {}) click to toggle source
# File lib/elegant_leaderboard/argument.rb, line 6
def initialize(args = {})
  @model_klass  = args[:model_klass]
  @column_name  = parse_column_name(args[:column_name])
  @sort_order   = parse_sort_order(args[:sort_order])
  @around_limit = parse_around_limit(args[:around_limit])

  validate_column_name
  validate_sort_order
  validate_around_limit

  merge_sort_order
end

Public Instance Methods

column_exists_in_db?() click to toggle source
# File lib/elegant_leaderboard/argument.rb, line 46
def column_exists_in_db?
  model_klass.column_names.include?(column_name)
end
merge_sort_order() click to toggle source
# File lib/elegant_leaderboard/argument.rb, line 50
def merge_sort_order
  # Ensure 'id' is always present in Sort Order.
  @sort_order | ['id']
  @sort_order = @sort_order.join(',')
end
parse_around_limit(around_limit) click to toggle source
# File lib/elegant_leaderboard/argument.rb, line 27
def parse_around_limit(around_limit)
  around_limit ? around_limit : 2
end
parse_column_name(column_name) click to toggle source
# File lib/elegant_leaderboard/argument.rb, line 19
def parse_column_name(column_name)
  [String, Symbol].include?(column_name.class) ? column_name.to_s : ''
end
parse_sort_order(sort_order) click to toggle source
# File lib/elegant_leaderboard/argument.rb, line 23
def parse_sort_order(sort_order)
  sort_order.present? ? sort_order : ['id']
end
validate_around_limit() click to toggle source
# File lib/elegant_leaderboard/argument.rb, line 36
def validate_around_limit
  return if around_limit.to_i > 0
  raise Error::InvalidAroundLimit
end
validate_column_name() click to toggle source
# File lib/elegant_leaderboard/argument.rb, line 31
def validate_column_name
  return if column_name.present? && column_exists_in_db?
  raise Error::InvalidColumnName
end
validate_sort_order() click to toggle source
# File lib/elegant_leaderboard/argument.rb, line 41
def validate_sort_order
  return if sort_order.is_a?(Array)
  raise Error::InvalidSortOrder
end