Ruby on rails HasandBelongToMany rails类生成方法调用super

Ruby on rails HasandBelongToMany rails类生成方法调用super,ruby-on-rails,ruby,ruby-on-rails-3,Ruby On Rails,Ruby,Ruby On Rails 3,我正试图找出我认为是Rails中has_和Thou属于Thou的许多方法中的一个bug。问题是我在课堂上使用了不规则的复数形式。我们将这个类称为StreetOfCars。我已经正确设置了不规则的多元化,如下所述。类名只是示例,重要的是StreetOfCars的不规则性,并且以“s”结尾。我有两个问题 这到底是怎么回事 超级飞机最终降落在哪里 如果您需要任何其他信息,请告诉我 StreetOfCars.reflect_on_assocation(:cities).options[:join_tab

我正试图找出我认为是Rails中has_和Thou属于Thou的许多方法中的一个bug。问题是我在课堂上使用了不规则的复数形式。我们将这个类称为StreetOfCars。我已经正确设置了不规则的多元化,如下所述。类名只是示例,重要的是StreetOfCars的不规则性,并且以“s”结尾。我有两个问题

  • 这到底是怎么回事
  • 超级飞机最终降落在哪里
  • 如果您需要任何其他信息,请告诉我

    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
    
    StreetOfCars.反映位置(:城市)。选项[:加入表格]
    #=>“城市、街道、汽车”
    城市。反映城市关联(:街道\汽车)。选项[:加入表格]
    #=>“城市、街道、汽车”
    类街黄金
    你和你属于很多城市吗
    结束
    阶级城市
    有很多属于你的街道吗
    结束
    #文件config/initializers/indlections.rb
    ActiveSupport::influctor.influctions do | influct|
    不规则的“黄金街”、“黄金街”
    结束
    #文件activerecord/lib/active\u record/associations/builder/has\u和\u属于\u many.rb,第7行
    类具有ANDBELONGSTOMANY<集合关联
    def构建
    反射=超级
    检查有效性(反射)
    定义\u销毁\u钩子
    反射
    结束
    结束
    #文件activerecord/lib/active\u record/associations/builder/collection\u association.rb,第21行
    类集合关联<关联
    def构建
    包裹块扩展
    反射=超级
    CALLBACKS.each{| callback_name | define_callback(callback_name)}
    反射
    结束
    结束
    #文件active_record/associations/association.rb
    阶级协会
    #未在此类中定义生成。
    结束
    
    您是否尝试过在关联中使用
    :class
    指令,而不是尝试使用屈折符进行欺骗?我以前见过这些类型的问题,使用
    :class
    而不是试图弯曲屈折体来做你想做的事,你的汗水和眼泪就少了很多。你是对的,你可以传入:class\u name选项或:join\u table选项并覆盖默认的Rails行为。我更感兴趣的是了解“超级”是如何被使用的,这样我就可以追踪代码中的错误了。好的..是的。我也这么怀疑;)那很好。不过,这对你没什么帮助。除了我会尝试在ruby调试器下运行它,跟踪代码并查看它的最终位置(如果你还没有尝试过的话)…顺便说一句。我从github下载了rails,这里有
    active\u record/associations/builder/association.rb
    ,其中定义了
    build
    。太棒了,这就是我丢失的文件。