Wow, zmagałem się z tym przez cały dzień, podążając za dokumentem "oficjalny" rubinowy przewodnik po szynach i odkryłem, że przez cały czas mogłem się pomylić z dokumentem. Chcę tylko potwierdzić, czy to prawda.Dokument przewodników Ruby on Rails jest nieprawidłowy w skojarzeniu z Activerecord?
Jeśli przejdziesz do http://guides.rubyonrails.org/association_basics.html i poniżej 2.10. jaźń łączy punkt mówi:
class Employee < ActiveRecord::Base
has_many :subordinates, :class_name => "Employee"
belongs_to :manager, :class_name => "Employee",
:foreign_key => "manager_id"
end
Teraz jestem nowicjuszem i po prostu wierzył w tym kodzie (Co jeszcze mogę zrobić?) i napisał jakiś kod, który jest odmianą tej jaźni dołączyć sprawę. Jednak im więcej na to patrzyłem, tym bardziej nie czułem się dobrze. nie jest :subordinates
przypuszczalnie mieć pole :foreign_key
zamiast :manager
? W każdym razie właśnie zmieniłem to tak, że kod jest podobny:
class Employee < ActiveRecord::Base
has_many :subordinates, :class_name => "Employee", :foreign_key => "manager_id"
belongs_to :manager, :class_name => "Employee"
end
i teraz działa. Czy czegoś brakuje? Czy też oficjalny dokument jest nieprawidłowy? Trudno uwierzyć, że oficjalny dokument przedstawiłby nieprawidłowe informacje, ale może tak właśnie jest.
Tak, masz rację. Stowarzyszenie o nazwie 'manager' oczywiście oczywiście poprawnie zajął klucz obcy' manager_id'. I wtedy skojarzenie "podwładnych" w ten sam sposób zakłada niepoprawny foreign_key 'identyfikator_węzła_ległego', więc to on musi się zmienić. – DanneManne
Wysyłam commit do docrails, który naprawia ten błąd – MikDiet
Widzę, w jaki sposób: foreign_key => 'manager_id' został poprawnie umieszczony. Jak daleko wiem, foreign_key idzie z stroną belongs_to relacji. Chciałbym zobaczyć przykład tego, co nazywacie "... a teraz działa". Oczywiście, może mi brakować czegoś. – Daniel