【发布时间】:2012-02-25 22:53:41
【问题描述】:
我正在分析 Rails 源代码,因为我想了解 has_many 和类似结构的内部工作原理。
到目前为止,我能够找到该方法的实现位置 (link to github):它在模块 ActiveRecord::Associations 中
def has_many(name, options = {}, &extension)
Builder::HasMany.build(self, name, options, &extension)
end
这最终在 ActiveRecord::Associations::Builder::CollectionAssociation 类中结束 (link to github)
def self.build(model, name, options, &extension)
new(model, name, options, &extension).build
end
我的 ruby 技能到此为止了,我无法进一步跟踪它并找到“新”实施的地方以及它的作用。
有人可以指出我正确的方向,也许可以评论一下,引擎盖下发生了什么?
【问题讨论】:
-
+1 用于仔细阅读您正在使用的工具的源代码,以便更深入地了解它们的内部结构。好样的。
-
@s.m.:我同意。如果阅读源代码没有“显示研究成果”(正如赞成按钮的工具提示所说),我不知道是什么! +1!
-
感谢大家的回答。我接受了 Jörg 的回答,因为它最详细。我也 +1 Baldrik 和 s.m.因为是第一个回答的人。
标签: ruby-on-rails ruby implementation has-many