diff options
Diffstat (limited to 'activerecord/lib')
-rw-r--r-- | activerecord/lib/active_record/associations/builder/association.rb | 12 | ||||
-rw-r--r-- | activerecord/lib/active_record/associations/builder/collection_association.rb | 16 |
2 files changed, 14 insertions, 14 deletions
diff --git a/activerecord/lib/active_record/associations/builder/association.rb b/activerecord/lib/active_record/associations/builder/association.rb index fe8274e1d8..3f63326b16 100644 --- a/activerecord/lib/active_record/associations/builder/association.rb +++ b/activerecord/lib/active_record/associations/builder/association.rb @@ -21,15 +21,15 @@ module ActiveRecord::Associations::Builder attr_reader :name, :scope, :options def self.build(model, name, scope, options, &block) - builder = create_builder model, name, scope, options, &block + extension = define_extensions model, name, &block + builder = create_builder model, name, scope, options, extension reflection = builder.build(model) define_accessors model, reflection define_callbacks model, reflection - builder.define_extensions model reflection end - def self.create_builder(model, name, scope, options, &block) + def self.create_builder(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,10 +37,10 @@ module ActiveRecord::Associations::Builder scope = nil end - new(name, scope, options, &block) + new(name, scope, options, extension) end - def initialize(name, scope, options) + def initialize(name, scope, options, extension) @name = name @scope = scope @options = options @@ -68,7 +68,7 @@ module ActiveRecord::Associations::Builder options.assert_valid_keys(valid_options) end - def define_extensions(model) + def self.define_extensions(model, name) end def self.define_callbacks(model, reflection) diff --git a/activerecord/lib/active_record/associations/builder/collection_association.rb b/activerecord/lib/active_record/associations/builder/collection_association.rb index d68f5d6792..70548bd277 100644 --- a/activerecord/lib/active_record/associations/builder/collection_association.rb +++ b/activerecord/lib/active_record/associations/builder/collection_association.rb @@ -14,12 +14,11 @@ module ActiveRecord::Associations::Builder attr_reader :block_extension - def initialize(name, scope, options) + def initialize(name, scope, options, extension) super - @mod = nil - if block_given? - @mod = Module.new(&Proc.new) - @scope = wrap_scope @scope, @mod + + if extension + @scope = wrap_scope @scope, extension end end @@ -32,10 +31,11 @@ module ActiveRecord::Associations::Builder } end - def define_extensions(model) - if @mod + def self.define_extensions(model, name) + if block_given? extension_module_name = "#{model.name.demodulize}#{name.to_s.camelize}AssociationExtension" - model.parent.const_set(extension_module_name, @mod) + extension = Module.new(&Proc.new) + model.parent.const_set(extension_module_name, extension) end end |