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

Merge pull request #17575 from shikshachauhan/make-habtm-consistent

Allow class_name option in habtm to be consistent with other association...
This commit is contained in:
Rafael Mendonça França 2014-11-19 18:33:31 -02:00
commit 7a5a3a8828
2 changed files with 11 additions and 1 deletions

View file

@ -110,7 +110,7 @@ module ActiveRecord::Associations::Builder
rhs_options = {} rhs_options = {}
if options.key? :class_name 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] rhs_options[:class_name] = options[:class_name]
end end

View file

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