Sha256: afe3d6c63e409ed4b9f834d03831dc94180abc14f68ccc9fad9913481fb7de36

Contents?: true

Size: 1.11 KB

Versions: 10

Compression:

Stored size: 1.11 KB

Contents

module ActiveRecord
  module Associations
    class AssociationCollection

      include Hobo::Scopes::ApplyScopes


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


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


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


      def member_class
        proxy_reflection.klass
      end

      private

        def set_reverse_association(object)
          if @owner.new_record? &&
              (refl = @owner.class.reverse_reflection(@reflection.name)) &&
              refl.macro == :belongs_to
            bta = ActiveRecord::Associations::BelongsToAssociation.new(object, refl)
            bta.replace(@owner)
            object.instance_variable_set("@#{refl.name}", bta)
          end
        end

    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
hobo-0.9.103 lib/active_record/association_collection.rb
hobo-0.9.102 lib/active_record/association_collection.rb
hobo-0.9.101 lib/active_record/association_collection.rb
hobo-0.9.100 lib/active_record/association_collection.rb
hobo-0.9.0 lib/active_record/association_collection.rb
hobo-0.8.10 lib/active_record/association_collection.rb
hobo-0.8.9 lib/active_record/association_collection.rb
hobo-0.8.8 lib/active_record/association_collection.rb
hobo-0.8.7 lib/active_record/association_collection.rb
hobo-0.8.6 lib/active_record/association_collection.rb