1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00

Allow habtm class_name option to be consistent with other associations

This commit is contained in:
shiksha 2014-11-13 11:13:44 +05:30
parent 52c3a16fa0
commit 07e0d8cc0c
2 changed files with 11 additions and 1 deletions

View file

@ -110,7 +110,7 @@ module ActiveRecord::Associations::Builder
rhs_options = {}
if options.key? :class_name
rhs_options[:foreign_key] = options[:class_name].foreign_key
rhs_options[:foreign_key] = options[:class_name].to_s.foreign_key
rhs_options[:class_name] = options[:class_name]
end

View file

@ -79,6 +79,10 @@ class SubDeveloper < Developer
:association_foreign_key => "developer_id"
end
class DeveloperWithSymbolClassName < Developer
has_and_belongs_to_many :projects, class_name: :ProjectWithSymbolsForKeys
end
class HasAndBelongsToManyAssociationsTest < ActiveRecord::TestCase
fixtures :accounts, :companies, :categories, :posts, :categories_posts, :developers, :projects, :developers_projects,
:parrots, :pirates, :parrots_pirates, :treasures, :price_estimates, :tags, :taggings, :computers
@ -892,4 +896,10 @@ class HasAndBelongsToManyAssociationsTest < ActiveRecord::TestCase
assert_not_nil File.read(File.expand_path("../../../fixtures/developers.yml", __FILE__)).index("shared_computers")
assert_equal developers(:david).shared_computers.first, computers(:laptop)
end
def test_with_symbol_class_name
assert_nothing_raised NoMethodError do
DeveloperWithSymbolClassName.new
end
end
end