Rails の has_and_belongs_to_many メソッドのバグと思われるものを追跡しようとしています。落とし穴は、クラスに不規則な複数形を使用していることです。このクラスを StreetOfCars と呼びます。以下に記載されているように、不規則な複数形を正しく設定しています。クラス名は単なる例です。重要なことは、StreetOfCars の不規則性と、's' で終わることです。2 つの質問があります。
- ここで一体何が起こっているのですか?
- 超最終着陸はどこですか?
他の情報が必要な場合はお知らせください。
StreetOfCars.reflect_on_assocation(:cities).options[:join_table]
#=> 'cities_streets_of_cars'
City.reflect_on_assocation(:streets_of_cars).options[:join_table]
#=> 'cities_streets_of_car'
class StreetOfGold
has_and_belongs_to_many :cities
end
class City
has_and_belongs_to_many :streets_of_gold
end
#File config/initializers/inflections.rb
ActiveSupport::Inflector.inflections do |inflect|
inflect.irregular 'street_of_gold', 'streets_of_gold'
end
# File activerecord/lib/active_record/associations/builder/has_and_belongs_to_many.rb, line 7
class HasAndBelongsToMany < CollectionAssociation
def build
reflection = super
check_validity(reflection)
define_destroy_hook
reflection
end
end
# File activerecord/lib/active_record/associations/builder/collection_association.rb, line 21
class CollectionAssociation < Association
def build
wrap_block_extension
reflection = super
CALLBACKS.each { |callback_name| define_callback(callback_name) }
reflection
end
end
# File active_record/associations/association.rb
class Association
# build is not defined in this class.
end