Sha256: b98d54a153b11ec36798450e7ea2c3deadbbdfa2aa64bb968ae33257eb113612

Contents?: true

Size: 1.12 KB

Versions: 3

Compression:

Stored size: 1.12 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)
      merged.origin ||= r.respond_to?(:origin) && r.origin
      merged.origin_attribute ||= r.respond_to?(:origin_attribute) && r.origin_attribute
      merged
    end

    alias_method_chain :merge, :origin
  end

  module Associations
    class CollectionProxy

      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

3 entries across 3 versions & 1 rubygems

Version Path
hobo-1.4.0.pre4 lib/hobo/extensions/active_record/relation_with_origin.rb
hobo-1.4.0.pre3 lib/hobo/extensions/active_record/relation_with_origin.rb
hobo-1.4.0.pre2 lib/hobo/extensions/active_record/relation_with_origin.rb