diff --git a/activerecord/lib/active_record/associations/builder/association.rb b/activerecord/lib/active_record/associations/builder/association.rb index 4efd5aa8ba0f3a9335106a1ece621f8075c111dc..023afef3b9abb39d573346029cf88bb0e10df112 100644 --- a/activerecord/lib/active_record/associations/builder/association.rb +++ b/activerecord/lib/active_record/associations/builder/association.rb @@ -18,18 +18,15 @@ class << self VALID_OPTIONS = [:class_name, :class, :foreign_key, :validate] - attr_reader :name, :scope, :options - def self.build(model, name, scope, options, &block) extension = define_extensions model, name, &block - builder = create_builder model, name, scope, options, extension - reflection = builder.build(model) + reflection = create_reflection model, name, scope, options, extension define_accessors model, reflection define_callbacks model, reflection reflection end - def self.create_builder(model, name, scope, options, extension = nil) + def self.create_reflection(model, name, scope, options, extension = nil) raise ArgumentError, "association names must be a Symbol" unless name.kind_of?(Symbol) if scope.is_a?(Hash) @@ -37,16 +34,11 @@ def self.create_builder(model, name, scope, options, extension = nil) scope = nil end - new(name, scope, options, extension) - end - - def initialize(name, scope, options, extension) - @name = name - @options = options + validate_options(options) - self.class.validate_options(options) + scope = build_scope(scope, extension) - @scope = self.class.build_scope(scope, extension) + ActiveRecord::Reflection.create(macro, name, scope, options, model) end def self.build_scope(scope, extension) @@ -67,10 +59,6 @@ def self.wrap_scope(scope, extension) scope end - def build(model) - ActiveRecord::Reflection.create(self.class.macro, name, scope, options, model) - end - def self.macro raise NotImplementedError end diff --git a/activerecord/lib/active_record/associations/builder/has_and_belongs_to_many.rb b/activerecord/lib/active_record/associations/builder/has_and_belongs_to_many.rb index af596a3a6486eb92ea858338624f9b5b49f16936..1c9c04b04456f520c962ad61d144779357812577 100644 --- a/activerecord/lib/active_record/associations/builder/has_and_belongs_to_many.rb +++ b/activerecord/lib/active_record/associations/builder/has_and_belongs_to_many.rb @@ -84,11 +84,11 @@ def middle_reflection(join_model) middle_name = [lhs_model.name.downcase.pluralize, association_name].join('_').gsub(/::/, '_').to_sym middle_options = middle_options join_model - hm_builder = HasMany.create_builder(lhs_model, - middle_name, - nil, - middle_options) - hm_builder.build lhs_model + + HasMany.create_reflection(lhs_model, + middle_name, + nil, + middle_options) end private