Sha256: 674907aaa91eea2f0e04b0b2ea690105ea10351c1e31223288ba4723b3fc026c

Contents?: true

Size: 1.47 KB

Versions: 14

Compression:

Stored size: 1.47 KB

Contents

module ActiveRecord

  class Relation
    attr_accessor :origin, :origin_attribute

    def member_class
      @klass
    end
  end

  module SpawnMethods
    def merge_with_origin(r)
      merged = merge_without_origin(r)
      # LH#1002:  cannot call respond_to? because default_scope ends
      # up calling merge and we end up with infinite recursion
      merged.origin = r.origin rescue nil unless merged.instance_variable_defined?("@origin")
      merged.origin_attribute = r.origin_attribute rescue nil unless merged.instance_variable_defined?("@origin_attribute")
      merged
    end

    alias_method_chain :merge, :origin
  end

  module Associations
    class CollectionProxy

      # FIXME Ralis4:  really hoping that we can replace this with
      # something based on https://github.com/rails/rails/issues/5717
      # def scoped_with_origin
      #   relation = scoped_without_origin.clone
      #   relation.origin = proxy_association.owner
      #   relation.origin_attribute = proxy_association.reflection.name
      #   relation
      # end
      # alias_method_chain :scoped, :origin

      def method_missing_with_origin(method, *args, &block)
        res = method_missing_without_origin(method, *args, &block)
        res.origin = proxy_association.owner if res.respond_to?(:origin)
        res.origin_attribute = proxy_association.reflection.name if res.respond_to?(:origin_attribute)
        res
      end
      alias_method_chain :method_missing, :origin

    end
  end
end

Version data entries

14 entries across 14 versions & 1 rubygems

Version Path
hobo-2.2.6 lib/hobo/extensions/active_record/relation_with_origin.rb
hobo-2.2.5 lib/hobo/extensions/active_record/relation_with_origin.rb
hobo-2.2.4 lib/hobo/extensions/active_record/relation_with_origin.rb
hobo-2.2.3 lib/hobo/extensions/active_record/relation_with_origin.rb
hobo-2.2.2 lib/hobo/extensions/active_record/relation_with_origin.rb
hobo-2.2.1 lib/hobo/extensions/active_record/relation_with_origin.rb
hobo-2.2.0 lib/hobo/extensions/active_record/relation_with_origin.rb
hobo-2.1.2 lib/hobo/extensions/active_record/relation_with_origin.rb
hobo-2.1.1 lib/hobo/extensions/active_record/relation_with_origin.rb
hobo-2.1.0 lib/hobo/extensions/active_record/relation_with_origin.rb
hobo-2.1.0.pre4 lib/hobo/extensions/active_record/relation_with_origin.rb
hobo-2.1.0.pre3 lib/hobo/extensions/active_record/relation_with_origin.rb
hobo-2.1.0.pre2 lib/hobo/extensions/active_record/relation_with_origin.rb
hobo-2.1.0.pre1 lib/hobo/extensions/active_record/relation_with_origin.rb