Ruby on rails HasandBelongToMany rails类生成方法调用super
我正试图找出我认为是Rails中has_和Thou属于Thou的许多方法中的一个bug。问题是我在课堂上使用了不规则的复数形式。我们将这个类称为StreetOfCars。我已经正确设置了不规则的多元化,如下所述。类名只是示例,重要的是StreetOfCars的不规则性,并且以“s”结尾。我有两个问题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
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
。太棒了,这就是我丢失的文件。