Module: Mongoid::History::Trackable::SingletonMethods
- Defined in:
- lib/mongoid/history/trackable.rb
Instance Method Summary collapse
- #clear_trackable_memoization ⇒ Object
-
#dynamic_field?(field) ⇒ Boolean
Checks if field is dynamic.
- #field_format(field) ⇒ Object
- #field_formats ⇒ Object
- #history_trackable_options ⇒ Object
- #inherited(subclass) ⇒ Object
-
#reserved_tracked_fields ⇒ Array < String >
Retrieves the memoized list of reserved tracked fields, which are only included for certain actions.
- #trackable_scope ⇒ Object
-
#tracked?(field_or_relation, action = :update) ⇒ Boolean
Whether or not the field or embedded relation should be tracked.
-
#tracked_embeds_many ⇒ Array < String >
Retrieves the memoized list of tracked embeds_many relations.
-
#tracked_embeds_many?(relation) ⇒ Boolean
Whether or not the embeds_many relation should be tracked.
- #tracked_embeds_many_attributes(relation) ⇒ Object
-
#tracked_embeds_one ⇒ Array < String >
Retrieves the memoized list of tracked embeds_one relations.
-
#tracked_embeds_one?(relation) ⇒ Boolean
Whether or not the embeds_one relation should be tracked.
- #tracked_embeds_one_attributes(relation) ⇒ Object
-
#tracked_field?(field, action = :update) ⇒ Boolean
Whether or not the field should be tracked.
-
#tracked_fields ⇒ Array < String >
Retrieves the memoized base list of tracked fields, excluding reserved fields.
-
#tracked_fields_for_action(action) ⇒ Array < String >
Retrieves the list of tracked fields for a given action.
-
#tracked_relation?(relation) ⇒ Boolean
Whether or not the relation should be tracked.
Instance Method Details
#clear_trackable_memoization ⇒ Object
572 573 574 575 576 577 578 579 |
# File 'lib/mongoid/history/trackable.rb', line 572 def clear_trackable_memoization @reserved_tracked_fields = nil @history_trackable_options = nil @trackable_settings = nil @tracked_fields = nil @tracked_embeds_one = nil @tracked_embeds_many = nil end |
#dynamic_field?(field) ⇒ Boolean
Checks if field is dynamic.
462 463 464 465 466 |
# File 'lib/mongoid/history/trackable.rb', line 462 def dynamic_field?(field) dynamic_enabled? && !fields.keys.include?(database_field_name(field)) && !.map { |_, v| v.key }.include?(database_field_name(field)) end |
#field_format(field) ⇒ Object
468 469 470 |
# File 'lib/mongoid/history/trackable.rb', line 468 def field_format(field) field_formats[database_field_name(field)] end |
#field_formats ⇒ Object
503 504 505 |
# File 'lib/mongoid/history/trackable.rb', line 503 def field_formats @field_formats ||= [:format] end |
#history_trackable_options ⇒ Object
568 569 570 |
# File 'lib/mongoid/history/trackable.rb', line 568 def @history_trackable_options ||= .prepared end |
#inherited(subclass) ⇒ Object
581 582 583 584 |
# File 'lib/mongoid/history/trackable.rb', line 581 def inherited(subclass) super subclass. = Mongoid::History::Options.new(subclass, .) end |
#reserved_tracked_fields ⇒ Array < String >
Retrieves the memoized list of reserved tracked fields, which are only included for certain actions.
494 495 496 497 498 499 500 501 |
# File 'lib/mongoid/history/trackable.rb', line 494 def reserved_tracked_fields @reserved_tracked_fields ||= begin fields = ['_id', [:version_field].to_s] modifier_field = [:modifier_field] fields << "#{modifier_field}_id" if modifier_field fields end end |
#trackable_scope ⇒ Object
564 565 566 |
# File 'lib/mongoid/history/trackable.rb', line 564 def trackable_scope collection_name.to_s.singularize.to_sym end |
#tracked?(field_or_relation, action = :update) ⇒ Boolean
Whether or not the field or embedded relation should be tracked.
443 444 445 |
# File 'lib/mongoid/history/trackable.rb', line 443 def tracked?(field_or_relation, action = :update) tracked_field?(field_or_relation, action) || tracked_relation?(field_or_relation) end |
#tracked_embeds_many ⇒ Array < String >
Retrieves the memoized list of tracked embeds_many relations
552 553 554 555 556 557 558 |
# File 'lib/mongoid/history/trackable.rb', line 552 def @tracked_embeds_many ||= begin reflect_on_all_associations(:embeds_many) .map(&:key) .select { |rel| [:relations][:embeds_many].include? rel } end end |
#tracked_embeds_many?(relation) ⇒ Boolean
Whether or not the embeds_many relation should be tracked.
545 546 547 |
# File 'lib/mongoid/history/trackable.rb', line 545 def (relation) .include?(database_field_name(relation)) end |
#tracked_embeds_many_attributes(relation) ⇒ Object
560 561 562 |
# File 'lib/mongoid/history/trackable.rb', line 560 def (relation) [:relations][:embeds_many][database_field_name(relation)] end |
#tracked_embeds_one ⇒ Array < String >
Retrieves the memoized list of tracked embeds_one relations
528 529 530 531 532 533 534 |
# File 'lib/mongoid/history/trackable.rb', line 528 def @tracked_embeds_one ||= begin reflect_on_all_associations(:embeds_one) .map(&:key) .select { |rel| [:relations][:embeds_one].include? rel } end end |
#tracked_embeds_one?(relation) ⇒ Boolean
Whether or not the embeds_one relation should be tracked.
521 522 523 |
# File 'lib/mongoid/history/trackable.rb', line 521 def (relation) .include?(database_field_name(relation)) end |
#tracked_embeds_one_attributes(relation) ⇒ Object
536 537 538 |
# File 'lib/mongoid/history/trackable.rb', line 536 def (relation) [:relations][:embeds_one][database_field_name(relation)] end |
#tracked_field?(field, action = :update) ⇒ Boolean
Whether or not the field should be tracked.
453 454 455 |
# File 'lib/mongoid/history/trackable.rb', line 453 def tracked_field?(field, action = :update) dynamic_field?(field) || tracked_fields_for_action(action).include?(database_field_name(field)) end |
#tracked_fields ⇒ Array < String >
Retrieves the memoized base list of tracked fields, excluding reserved fields.
487 488 489 |
# File 'lib/mongoid/history/trackable.rb', line 487 def tracked_fields @tracked_fields ||= [:fields] + [:dynamic] end |
#tracked_fields_for_action(action) ⇒ Array < String >
Retrieves the list of tracked fields for a given action.
477 478 479 480 481 482 |
# File 'lib/mongoid/history/trackable.rb', line 477 def tracked_fields_for_action(action) case action.to_sym when :destroy then tracked_fields + reserved_tracked_fields else tracked_fields end end |
#tracked_relation?(relation) ⇒ Boolean
Whether or not the relation should be tracked.
512 513 514 |
# File 'lib/mongoid/history/trackable.rb', line 512 def tracked_relation?(relation) (relation) || (relation) end |