class Elasticsearch::Model::Extensions::OuterDocumentUpdating::Update::ThroughPolymorphicAssociation
Configures callbacks to update the index of the model associated through a polymorphic association @see guides.rubyonrails.org/association_basics.html#polymorphic-associations
Public Class Methods
applicable_to?(klass)
click to toggle source
# File lib/elasticsearch/model/extensions/outer_document_updating.rb, line 53 def self.applicable_to?(klass) !! polymorphic_assoc_for(klass) end
polymorphic_assoc_for(klass)
click to toggle source
# File lib/elasticsearch/model/extensions/outer_document_updating.rb, line 57 def self.polymorphic_assoc_for(klass) klass.reflect_on_all_associations.find { |a| a.macro == :belongs_to && a.options[:polymorphic] } end
Public Instance Methods
apply()
click to toggle source
# File lib/elasticsearch/model/extensions/outer_document_updating.rb, line 63 def apply parent_class = @parent_class child_class = @child_class polymorphic_assoc = self.class.polymorphic_assoc_for(child_class) polymorphic_assoc_name = polymorphic_assoc.name parent_type_attribute_name = :"#{polymorphic_assoc_name}_type" parent_id_attribute_name = :"#{polymorphic_assoc_name}_id" only_if = -> updated_record { updated_record.send(parent_type_attribute_name) == parent_class.name } records_to_update_documents = -> updated_record { parent_class.where(id: updated_record.send(parent_id_attribute_name)) } [only_if, records_to_update_documents] end