    # File lib/active_record/associations.rb, line 993
          def belongs_to(association_id, options = {})
            reflection = create_belongs_to_reflection(association_id, options)

            if reflection.options[:polymorphic]
              association_accessor_methods(reflection, BelongsToPolymorphicAssociation)
            else
              association_accessor_methods(reflection, BelongsToAssociation)
              association_constructor_method(:build,  reflection, BelongsToAssociation)
              association_constructor_method(:create, reflection, BelongsToAssociation)
            end

            # Create the callbacks to update counter cache
            if options[:counter_cache]
              cache_column = reflection.counter_cache_column

              method_name = "belongs_to_counter_cache_after_create_for_#{reflection.name}".to_sym
              define_method(method_name) do
                association = send(reflection.name)
                association.class.increment_counter(cache_column, send(reflection.primary_key_name)) unless association.nil?
              end
              after_create method_name

              method_name = "belongs_to_counter_cache_before_destroy_for_#{reflection.name}".to_sym
              define_method(method_name) do
                association = send(reflection.name)
                association.class.decrement_counter(cache_column, send(reflection.primary_key_name)) unless association.nil?
              end
              before_destroy method_name

              module_eval(
                "#{reflection.class_name}.send(:attr_readonly,\"#{cache_column}\".intern) if defined?(#{reflection.class_name}) && #{reflection.class_name}.respond_to?(:attr_readonly)"
              )
            end

            configure_dependency_for_belongs_to(reflection)
          end