Module: LexoRanker::RankableMethods::Adapters::Sequel::ClassMethods
- Defined in:
- lib/lexoranker/rankable_methods/adapters/sequel.rb
Instance Method Summary collapse
- #create_ranked(attributes, position: nil, &block) ⇒ Object
- #ranks_around_position(id, position, scope_value: nil) ⇒ Object
- #set_ranked_scope(field) ⇒ Object
- #set_ranked_validations(field, scope = nil) ⇒ Object
Instance Method Details
#create_ranked(attributes, position: nil, &block) ⇒ Object
29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/lexoranker/rankable_methods/adapters/sequel.rb', line 29 def create_ranked(attributes, position: nil, &block) position = case position when :top, :bottom [:"move_to_#{position}"] when Integer [:move_to, position] else [:"move_to_#{rankable_default_insert_pos}"] end instance = new(attributes, &block) instance.send(*position) instance.save instance end |
#ranks_around_position(id, position, scope_value: nil) ⇒ Object
44 45 46 47 48 |
# File 'lib/lexoranker/rankable_methods/adapters/sequel.rb', line 44 def ranks_around_position(id, position, scope_value: nil) scope = ranked.exclude(id: id) scope = scope.where("#{rankable_scope}": scope_value) unless scope_value.nil? scope.offset(position - 1).limit(2).select(rankable_column).map(&:"#{rankable_column}") end |
#set_ranked_scope(field) ⇒ Object
12 13 14 15 16 17 18 |
# File 'lib/lexoranker/rankable_methods/adapters/sequel.rb', line 12 def set_ranked_scope(field) dataset_module do define_method(:ranked) do |direction: :asc| order(::Sequel.send(direction, field)).exclude(field => nil) end end end |
#set_ranked_validations(field, scope = nil) ⇒ Object
20 21 22 23 24 25 26 27 |
# File 'lib/lexoranker/rankable_methods/adapters/sequel.rb', line 20 def set_ranked_validations(field, scope = nil) args = scope.nil? ? field : [field, scope] plugin :validation_helpers define_method :validate do super() validates_unique(args) end end |