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:
commit
7a5a3a8828
2 changed files with 11 additions and 1 deletions
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in a new issue