Sha256: fa8e69ca4d049c3bd547a1b5d5d15d99a046c8e3cbbdb04f31b357c5cef2cbbe

Contents?: true

Size: 1.39 KB

Versions: 33

Compression:

Stored size: 1.39 KB

Contents

module ActiveRecord
  module Associations
    class CollectionProxy

      include Hobo::Model::Scopes::ApplyScopes


      def hobo_association_collection?
        Hobo::Model.in?(proxy_association.owner.class.included_modules)
      end


      def new_candidate(attributes = {})
        record = new
        proxy_association.target.delete record
        set_reverse_association(record) if hobo_association_collection?
        record
      end


      def user_new_candidate(user, attributes = {})
        record = user_new(user, attributes)
        proxy_association.target.delete record
        set_reverse_association(record) if hobo_association_collection?
        record
      end

      def is_a?(klass)
        if has_one_collection?
          load_target
          proxy_association.target.is_a?(klass)
        else
          [].is_a?(klass)
        end
      end

      def member_class
        proxy_association.reflection.klass
      end

      private

        def set_reverse_association(object)
          if proxy_association.owner.new_record? &&
              (refl = proxy_association.owner.class.reverse_reflection(proxy_association.reflection.name)) &&
              refl.macro == :belongs_to
            object.send("#{refl.name}=", proxy_association.owner)
          end
        end

        def has_one_collection?
          proxy_association.reflection.macro == :has_one
        end

    end
  end
end

Version data entries

33 entries across 33 versions & 1 rubygems

Version Path
hobo-2.2.6 lib/hobo/extensions/active_record/associations/collection.rb
hobo-2.2.5 lib/hobo/extensions/active_record/associations/collection.rb
hobo-2.2.4 lib/hobo/extensions/active_record/associations/collection.rb
hobo-2.2.3 lib/hobo/extensions/active_record/associations/collection.rb
hobo-2.2.2 lib/hobo/extensions/active_record/associations/collection.rb
hobo-2.2.1 lib/hobo/extensions/active_record/associations/collection.rb
hobo-2.2.0 lib/hobo/extensions/active_record/associations/collection.rb
hobo-2.1.2 lib/hobo/extensions/active_record/associations/collection.rb
hobo-2.1.1 lib/hobo/extensions/active_record/associations/collection.rb
hobo-2.1.0 lib/hobo/extensions/active_record/associations/collection.rb
hobo-2.1.0.pre4 lib/hobo/extensions/active_record/associations/collection.rb
hobo-2.1.0.pre3 lib/hobo/extensions/active_record/associations/collection.rb
hobo-2.1.0.pre2 lib/hobo/extensions/active_record/associations/collection.rb
hobo-2.1.0.pre1 lib/hobo/extensions/active_record/associations/collection.rb
hobo-2.0.1 lib/hobo/extensions/active_record/associations/collection.rb
hobo-2.0.0 lib/hobo/extensions/active_record/associations/collection.rb
hobo-2.0.0.pre10 lib/hobo/extensions/active_record/associations/collection.rb
hobo-2.0.0.pre9 lib/hobo/extensions/active_record/associations/collection.rb
hobo-2.0.0.pre8 lib/hobo/extensions/active_record/associations/collection.rb
hobo-2.0.0.pre7 lib/hobo/extensions/active_record/associations/collection.rb