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