class Lifesaver::Notification::EagerLoader
Attributes
loaded_models[RW]
models_to_load[RW]
Public Class Methods
new()
click to toggle source
# File lib/lifesaver/notification/eager_loader.rb, line 4 def initialize @models_to_load = {} @loaded_models = {} end
Public Instance Methods
add_model(class_name, id)
click to toggle source
# File lib/lifesaver/notification/eager_loader.rb, line 9 def add_model(class_name, id) return if model_previously_added?(class_name, id) models_to_load[class_name] ||= [] models_to_load[class_name] << id mark_model_added(class_name, id) end
empty?()
click to toggle source
# File lib/lifesaver/notification/eager_loader.rb, line 26 def empty? @models_to_load.empty? end
load()
click to toggle source
# File lib/lifesaver/notification/eager_loader.rb, line 16 def load models = [] models_to_load.each do |class_name, ids| klass = class_name.classify.constantize models |= load_associations(klass, ids) models_to_load.delete(class_name) end models end
Private Instance Methods
load_associations(klass, ids)
click to toggle source
# File lib/lifesaver/notification/eager_loader.rb, line 34 def load_associations(klass, ids) klass.load_with_notifiable_associations(ids) end
mark_model_added(class_name, id)
click to toggle source
# File lib/lifesaver/notification/eager_loader.rb, line 42 def mark_model_added(class_name, id) loaded_models[class_name] ||= {} loaded_models[class_name][id] = true end
model_previously_added?(class_name, id)
click to toggle source
# File lib/lifesaver/notification/eager_loader.rb, line 38 def model_previously_added?(class_name, id) loaded_models[class_name] && loaded_models[class_name][id] end