lib/polyamorous/join_association.rb in polyamorous-0.6.3 vs lib/polyamorous/join_association.rb in polyamorous-0.6.4

- old
+ new

@@ -20,22 +20,22 @@ def initialize_with_polymorphism(reflection, join_dependency, parent = nil, polymorphic_class = nil) if polymorphic_class && ::ActiveRecord::Base > polymorphic_class swapping_reflection_klass(reflection, polymorphic_class) do |reflection| initialize_without_polymorphism(reflection, join_dependency, parent) + self.reflection.options[:polymorphic] = true end else initialize_without_polymorphism(reflection, join_dependency, parent) end end def swapping_reflection_klass(reflection, klass) - reflection = reflection.clone - original_polymorphic = reflection.options.delete(:polymorphic) - reflection.instance_variable_set(:@klass, klass) - yield reflection - ensure - reflection.options[:polymorphic] = original_polymorphic + new_reflection = reflection.clone + new_reflection.instance_variable_set(:@options, reflection.options.clone) + new_reflection.options.delete(:polymorphic) + new_reflection.instance_variable_set(:@klass, klass) + yield new_reflection end def equality_with_polymorphism(other) equality_without_polymorphism(other) && base_klass == other.base_klass end