Ничего себе я боролся с этим в течение целого дня, следуя «официальному» рубину на справочнике направляющих, и только что обнаружил, что я мог ошибаться в документе все время. Я просто хочу подтвердить, верно ли это.Ruby on Rails неверный справочный документ по ассоциации Activerecord?
Если вы идете к 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
и теперь он работает. Я что-то упускаю? Или официальный документ ошибочен? Трудно поверить, что в официальном документе будет представлена некорректная информация, но, возможно, так оно и есть.
Да, вы правы. Конечно, ассоциация с именем 'manager' корректно примет внешний ключ' manager_id'. И тогда ассоциация 'subordinates' будет таким же образом принимать недопустимый foreign_key' subordinate_id', так что это тот, который нуждается в изменении. – DanneManne
Я отправляю фиксацию для docrails, которая исправляет эту ошибку – MikDiet
Я вижу, как: foreign_key => 'manager_id' был правильно помещен. Насколько я знаю, foreign_key идет с ссылкой на сторону отношения. Мне хотелось бы увидеть пример из того, что вы называете «... и теперь он работает». Конечно, я мог что-то упустить. – Daniel