From 5f169b2aed2476aabd9edc95577af774b469ef87 Mon Sep 17 00:00:00 2001 From: Aaron Patterson Date: Tue, 23 Jul 2013 13:06:57 -0700 Subject: [PATCH] extract mutation from generation method --- .../associations/builder/singular_association.rb | 2 +- activerecord/lib/active_record/reflection.rb | 8 +++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/activerecord/lib/active_record/associations/builder/singular_association.rb b/activerecord/lib/active_record/associations/builder/singular_association.rb index 76e48e66e5..7bd894d6ab 100644 --- a/activerecord/lib/active_record/associations/builder/singular_association.rb +++ b/activerecord/lib/active_record/associations/builder/singular_association.rb @@ -16,7 +16,7 @@ def define_accessors end # Defines the (build|create)_association methods for belongs_to or has_one association - + def define_constructors mixin.class_eval <<-CODE, __FILE__, __LINE__ + 1 def build_#{name}(*args, &block) diff --git a/activerecord/lib/active_record/reflection.rb b/activerecord/lib/active_record/reflection.rb index 4bd6669f3c..de2204da29 100644 --- a/activerecord/lib/active_record/reflection.rb +++ b/activerecord/lib/active_record/reflection.rb @@ -21,14 +21,16 @@ def self.create(macro, name, scope, options, ar) end reflection = klass.new(macro, name, scope, options, ar) + add_reflection ar, name, reflection + reflection + end - if klass == AggregateReflection + def self.add_reflection(ar, name, reflection) + if reflection.class == AggregateReflection ar.aggregate_reflections = ar.aggregate_reflections.merge(name => reflection) else ar.reflections = ar.reflections.merge(name => reflection) end - - reflection end # \Reflection enables to interrogate Active Record classes and objects -- GitLab