class CacheQL::PolymorphicKeyLoader

Public Class Methods

new(model, polymorphic_key) click to toggle source
# File lib/cacheql/polymorphic_key_loader.rb, line 4
def initialize(model, polymorphic_key)
  @model = model
  @polymorphic_key = polymorphic_key
end

Public Instance Methods

perform(polymorphic_value_sets) click to toggle source
# File lib/cacheql/polymorphic_key_loader.rb, line 9
def perform(polymorphic_value_sets)
  polymorphic_values = polymorphic_value_sets.flatten.uniq
  records = @model.where(@polymorphic_key => polymorphic_values).to_a

  polymorphic_value_sets.each do |polymorphic_value_set|
    matching_records = records.select do |record|
      polymorphic_value_set.id == record.public_send("#{@polymorphic_key}_id") &&
      polymorphic_value_set.class.name == record.public_send("#{@polymorphic_key}_type")
    end
    fulfill(polymorphic_value_set, matching_records)
  end
end