aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/associations/builder
diff options
context:
space:
mode:
authorRafael Mendonça França <rafaelmfranca@gmail.com>2014-06-19 14:57:51 -0300
committerRafael Mendonça França <rafaelmfranca@gmail.com>2014-06-19 14:59:48 -0300
commit76d6ec2a9a18ed92e1e8fdf445401a1e22f36713 (patch)
treea8b4e1cf2e29c2a1093a62c4a525d27b935e36e2 /activerecord/lib/active_record/associations/builder
parent498373468144b434322e8c3b2611ac5fc54e72ad (diff)
downloadrails-76d6ec2a9a18ed92e1e8fdf445401a1e22f36713.tar.gz
rails-76d6ec2a9a18ed92e1e8fdf445401a1e22f36713.tar.bz2
rails-76d6ec2a9a18ed92e1e8fdf445401a1e22f36713.zip
Fix has_and_belongs_to_many in a namespaced model pointing to a non namespaced model
Now the following case will work fine class Tag < ActiveRecord::Base end class Publisher::Article < ActiveRecord::Base has_and_belongs_to_many :tags end Fixes #15761
Diffstat (limited to 'activerecord/lib/active_record/associations/builder')
-rw-r--r--activerecord/lib/active_record/associations/builder/has_and_belongs_to_many.rb13
1 files changed, 5 insertions, 8 deletions
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 0ad5206980..34a555dfd4 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
@@ -15,7 +15,10 @@ module ActiveRecord::Associations::Builder
end
private
- def klass; @rhs_class_name.constantize; end
+
+ def klass
+ @lhs_class.send(:compute_type, @rhs_class_name)
+ end
end
def self.build(lhs_class, name, options)
@@ -23,13 +26,7 @@ module ActiveRecord::Associations::Builder
KnownTable.new options[:join_table].to_s
else
class_name = options.fetch(:class_name) {
- model_name = name.to_s.camelize.singularize
-
- if lhs_class.parent_name
- model_name.prepend("#{lhs_class.parent_name}::")
- end
-
- model_name
+ name.to_s.camelize.singularize
}
KnownClass.new lhs_class, class_name
end