Я анализирую исходный код rails, потому что мне хотелось бы понять внутреннюю работу has_many
и подобных конструкций.
До сих пор я был в состоянии найти, где реализован метод ( ссылка на github ): он находится в модуле ActiveRecord :: Associations
def has_many(name, options = {}, &extension)
Builder::HasMany.build(self, name, options, &extension)
end
На этом один конец ( ссылка на github ) заканчивается в классе ActiveRecord :: Associations:: Builder :: CollectionAssociation as
def self.build(model, name, options, &extension)
new(model, name, options, &extension).build
end
На этом мои навыки по рубину заканчиваются, и я не смог их отследить дальше и найти, где реализовано «новое» и что оно делает.
Можеткто-то указывает мне правильное направление и, возможно, комментирует, что происходит под капотом?