Analizuję kod źródłowy szyny, ponieważ chciałbym zrozumieć wewnętrzne działanie has_many
i podobnych konstrukcji.W jaki sposób zaimplementowano ruby na szynach has_many (i podobne)?
Do tej pory udało mi się znaleźć, gdzie realizowany jest metoda (link to github): jest w module ActiveRecord :: Associations
def has_many(name, options = {}, &extension)
Builder::HasMany.build(self, name, options, &extension)
end
Ten eventualy końce (link to github) w klasie ActiveRecord :: stowarzyszenia :: Builder :: CollectionAssociation jak
def self.build(model, name, options, &extension)
new(model, name, options, &extension).build
end
jest gdzie mój koniec umiejętności Ruby i nie mogłem śledzić go dalej i dowiedzieć się, gdzie jest „nowy” realizowany i co robi.
Czy ktoś może wskazać mi właściwy kierunek i może komentować, co się dzieje pod maską?
+1 do przeglądania kodu źródłowego narzędzia używasz w celu uzyskania głębsze zrozumienie ich wewnętrznych elementów. Droga do celu. –
@ s.m .: Zgadzam się. Jeśli czytanie kodu źródłowego nie "pokazuje wysiłku badawczego" (jak mówi podpowiedź do przycisku upvote), nie wiem, co robi! +1! –
Dziękuję wszystkim za odpowiedź. Przyjąłem odpowiedź Jörga, ponieważ jest ona najbardziej szczegółowa. Ja też + +1 Baldrik i s.m. za to, że pierwszy odpowiedział. –