module RankedModel::ClassMethods
Public Instance Methods
ranker(name)
click to toggle source
# File lib/ranked-model.rb, line 39 def ranker name rankers.find do |ranker| ranker.name == name end end
Private Instance Methods
column_default(ranker)
click to toggle source
# File lib/ranked-model.rb, line 71 def column_default ranker column_defaults[ranker.name.to_s] if ActiveRecord::Base.connected? && table_exists? end
ranks(*args)
click to toggle source
# File lib/ranked-model.rb, line 47 def ranks *args self.rankers ||= [] ranker = RankedModel::Ranker.new(*args) if column_default(ranker) raise NonNilColumnDefault, %Q{Your ranked model column "#{ranker.name}" must not have a default value in the database.} end self.rankers << ranker attr_reader "#{ranker.name}_position" define_method "#{ranker.name}_position=" do |position| if position.present? send "#{ranker.column}_will_change!" instance_variable_set "@#{ranker.name}_position", position end end define_method "#{ranker.name}_rank" do ranker.with(self).relative_rank end public "#{ranker.name}_position", "#{ranker.name}_position=" end