diff --git a/activerecord/lib/active_record/associations/builder/association.rb b/activerecord/lib/active_record/associations/builder/association.rb
index <HASH>..<HASH> 100644
--- a/activerecord/lib/active_record/associations/builder/association.rb
+++ b/activerecord/lib/active_record/associations/builder/association.rb
@@ -86,6 +86,7 @@ module ActiveRecord::Associations::Builder
     # Post.first.comments and Post.first.comments= methods are defined by this method...
     def define_accessors(model, reflection)
       mixin = model.generated_feature_methods
+      name = reflection.name
       self.class.define_readers(mixin, name)
       self.class.define_writers(mixin, name)
     end
diff --git a/activerecord/lib/active_record/associations/builder/singular_association.rb b/activerecord/lib/active_record/associations/builder/singular_association.rb
index <HASH>..<HASH> 100644
--- a/activerecord/lib/active_record/associations/builder/singular_association.rb
+++ b/activerecord/lib/active_record/associations/builder/singular_association.rb
@@ -8,7 +8,7 @@ module ActiveRecord::Associations::Builder
 
     def define_accessors(model, reflection)
       super
-      self.class.define_constructors(model.generated_feature_methods, name) if reflection.constructable?
+      self.class.define_constructors(model.generated_feature_methods, reflection.name) if reflection.constructable?
     end
 
     # Defines the (build|create)_association methods for belongs_to or has_one association
Use the reflection name instead of the accessor