Ничего себе, я боролся с этим целый день, следуя "официальному" рубину на справочнике направляющих, и только что обнаружил, что я мог ошибаться в документе все время. Я просто хочу подтвердить, верно ли это.
Если вы перейдете к http://guides.rubyonrails.org/association_basics.html и до 2.10. сам присоединяется к разделу, в котором говорится:
class Employee < ActiveRecord::Base
has_many :subordinates, :class_name => "Employee"
belongs_to :manager, :class_name => "Employee",
:foreign_key => "manager_id"
end
Теперь, я новичок и просто верю в этот код (Что еще я могу сделать?) и написал код, который является вариацией этого случая с явным присоединением. Однако чем больше я смотрел на него, тем больше он не чувствовал себя хорошо. не :subordinates
должен иметь поле :foreign_key
вместо :manager
? Во всяком случае, я только что изменил его, так что код выглядит примерно так:
class Employee < ActiveRecord::Base
has_many :subordinates, :class_name => "Employee", :foreign_key => "manager_id"
belongs_to :manager, :class_name => "Employee"
end
и теперь он работает. Я что-то упускаю? Или официальный документ ошибочен? Трудно поверить, что в официальном документе будет представлена некорректная информация, но, возможно, так, как есть.