Я анализирую исходный код 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
Вот где заканчиваются мои навыки работы с рубином, и я не мог отслеживать его дальше и найти, где «новое» реализовано и что оно делает .
Может ли кто-нибудь указать мне правильное направление и, возможно, прокомментировать, что происходит под капотом?