diff options
author | Rafael Mendonça França <rafaelmfranca@gmail.com> | 2014-06-19 14:57:51 -0300 |
---|---|---|
committer | Rafael Mendonça França <rafaelmfranca@gmail.com> | 2014-06-19 14:59:48 -0300 |
commit | 76d6ec2a9a18ed92e1e8fdf445401a1e22f36713 (patch) | |
tree | a8b4e1cf2e29c2a1093a62c4a525d27b935e36e2 /activerecord/lib/active_record/associations/builder | |
parent | 498373468144b434322e8c3b2611ac5fc54e72ad (diff) | |
download | rails-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.rb | 13 |
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 |