# File lib/active_record/associations.rb, line 432
      def belongs_to(association_id, options = {})
        validate_options([ :class_name, :foreign_key, :remote, :conditions, :order, :dependent, :counter_cache ], options.keys)

        association_name, association_class_name, class_primary_key_name =
            associate_identification(association_id, options[:class_name], options[:foreign_key], false)

        require_association_class(association_class_name)

        association_class_primary_key_name = options[:foreign_key] || Inflector.underscore(Inflector.demodulize(association_class_name)) + "_id"

        association_accessor_methods(association_name, association_class_name, association_class_primary_key_name, options, BelongsToAssociation)
        association_constructor_method(:build, association_name, association_class_name, association_class_primary_key_name, options, BelongsToAssociation)
        association_constructor_method(:create, association_name, association_class_name, association_class_primary_key_name, options, BelongsToAssociation)

        module_eval do
          before_save "association = instance_variable_get(\"@\#{association_name}\")\nif not association.nil? and association.new_record?\nassociation.save(true)\nself[\"\#{association_class_primary_key_name}\"] = association.id\nassociation.send(:construct_sql)\nend\n"
        end
      
        if options[:counter_cache]
          module_eval(
            "after_create '#{association_class_name}.increment_counter(\"#{self.to_s.underscore.pluralize + "_count"}\", #{association_class_primary_key_name})" +
            " unless #{association_name}.nil?'"
          )

          module_eval(
            "before_destroy '#{association_class_name}.decrement_counter(\"#{self.to_s.underscore.pluralize + "_count"}\", #{association_class_primary_key_name})" +
            " unless #{association_name}.nil?'"
          )          
        end

        # deprecated api
        deprecated_has_association_method(association_name)
        deprecated_association_comparison_method(association_name, association_class_name)
      end