Module: Mongoid::History::Trackable::ClassMethods

Defined in:
lib/mongoid/history/trackable.rb

Instance Method Summary collapse

Instance Method Details

#disable_tracking(&_block) ⇒ Object



49
50
51
52
53
54
# File 'lib/mongoid/history/trackable.rb', line 49

def disable_tracking(&_block)
  Mongoid::History.store[track_history_flag] = false
  yield
ensure
  Mongoid::History.store[track_history_flag] = true
end

#dynamic_enabled?Boolean

Returns:

  • (Boolean)


45
46
47
# File 'lib/mongoid/history/trackable.rb', line 45

def dynamic_enabled?
  Mongoid::Compatibility::Version.mongoid3? || (self < Mongoid::Attributes::Dynamic).present?
end

#history_settings(options = {}) ⇒ Object



33
34
35
36
37
38
39
# File 'lib/mongoid/history/trackable.rb', line 33

def history_settings(options = {})
  options = Mongoid::History.default_settings.merge(options.symbolize_keys)
  options = options.slice(*Mongoid::History.default_settings.keys)
  options[:paranoia_field] = aliased_fields[options[:paranoia_field].to_s] || options[:paranoia_field].to_s
  Mongoid::History.trackable_settings ||= {}
  Mongoid::History.trackable_settings[name.to_sym] = options
end

#track_history(options = {}) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/mongoid/history/trackable.rb', line 7

def track_history(options = {})
  extend EmbeddedMethods

  options_parser = Mongoid::History::Options.new(self)
  options = options_parser.parse(options)

  field options[:version_field].to_sym, type: Integer

  belongs_to_modifier_options = { class_name: Mongoid::History.modifier_class_name }
  belongs_to_modifier_options[:inverse_of] = options[:modifier_field_inverse_of] if options.key?(:modifier_field_inverse_of)
  belongs_to options[:modifier_field].to_sym, belongs_to_modifier_options

  include MyInstanceMethods
  extend SingletonMethods

  delegate :history_trackable_options, to: 'self.class'
  delegate :track_history?, to: 'self.class'

  before_update :track_update if options[:track_update]
  before_create :track_create if options[:track_create]
  before_destroy :track_destroy if options[:track_destroy]

  Mongoid::History.trackable_class_options ||= {}
  Mongoid::History.trackable_class_options[options_parser.scope] = options
end

#track_history?Boolean

Returns:

  • (Boolean)


41
42
43
# File 'lib/mongoid/history/trackable.rb', line 41

def track_history?
  Mongoid::History.enabled? && Mongoid::History.store[track_history_flag] != false
end

#track_history_flagObject



56
57
58
# File 'lib/mongoid/history/trackable.rb', line 56

def track_history_flag
  "mongoid_history_#{name.underscore}_trackable_enabled".to_sym
end

#tracker_classObject



60
61
62
63
# File 'lib/mongoid/history/trackable.rb', line 60

def tracker_class
  klass = history_trackable_options[:tracker_class_name] || Mongoid::History.tracker_class_name
  klass.is_a?(Class) ? klass : klass.to_s.camelize.constantize
end