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