Class: CacheQL::PolymorphicKeyLoader
- Inherits:
-
GraphQL::Batch::Loader
- Object
- GraphQL::Batch::Loader
- CacheQL::PolymorphicKeyLoader
- Defined in:
- lib/cacheql/polymorphic_key_loader.rb
Instance Method Summary collapse
-
#initialize(model, polymorphic_key) ⇒ PolymorphicKeyLoader
constructor
A new instance of PolymorphicKeyLoader.
- #perform(polymorphic_value_sets) ⇒ Object
Constructor Details
#initialize(model, polymorphic_key) ⇒ PolymorphicKeyLoader
Returns a new instance of PolymorphicKeyLoader.
4 5 6 7 |
# File 'lib/cacheql/polymorphic_key_loader.rb', line 4 def initialize(model, polymorphic_key) @model = model @polymorphic_key = polymorphic_key end |
Instance Method Details
#perform(polymorphic_value_sets) ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 20 |
# 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 |