class Mongoid::Orderable::Installer

Attributes

config[R]
klass[R]

Public Class Methods

new(klass, options = {}) click to toggle source
# File lib/mongoid/orderable/installer.rb, line 8
def initialize(klass, options = {})
  @klass = klass
  @config = Mongoid::Orderable::Configs::FieldConfig.new(klass, options).options
end

Public Instance Methods

setup() click to toggle source
# File lib/mongoid/orderable/installer.rb, line 13
def setup
  add_db_field
  add_db_index if config[:index]
  save_config
  include_mixins
  generate_all_helpers
end

Protected Instance Methods

add_db_field() click to toggle source
# File lib/mongoid/orderable/installer.rb, line 31
def add_db_field
  klass.field(config[:field], { type: Integer }.reverse_merge(config[:field_options]))
end
add_db_index() click to toggle source
# File lib/mongoid/orderable/installer.rb, line 35
def add_db_index
  spec = [[config[:field], 1]]
  config[:scope].each {|field| spec.unshift([field, 1]) } if config[:scope].is_a?(Array)
  klass.index(spec.to_h)
end
field_name() click to toggle source
# File lib/mongoid/orderable/installer.rb, line 23
def field_name
  config[:field_options][:as] || config[:field]
end
generate_all_helpers() click to toggle source
# File lib/mongoid/orderable/installer.rb, line 53
def generate_all_helpers
  Generators::Scope.new(klass).generate(field_name, order_scope)
  Generators::Position.new(klass).generate(field_name)
  Generators::Movable.new(klass).generate(field_name)
  Generators::Listable.new(klass).generate(field_name)
  Generators::Helpers.new(klass).generate
  Generators::LockCollection.new.generate(config[:lock_collection])
end
include_mixins() click to toggle source
# File lib/mongoid/orderable/installer.rb, line 46
def include_mixins
  klass.send :include, Mixins::Helpers
  klass.send :include, Mixins::Callbacks
  klass.send :include, Mixins::Movable
  klass.send :include, Mixins::Listable
end
order_scope() click to toggle source
# File lib/mongoid/orderable/installer.rb, line 27
def order_scope
  config[:scope]
end
save_config() click to toggle source
# File lib/mongoid/orderable/installer.rb, line 41
def save_config
  klass.orderable_configs ||= {}
  klass.orderable_configs = klass.orderable_configs.merge(field_name => config)
end