Wow Tôi đã đấu tranh với điều này cả ngày, sau khi "chính thức" ruby trên đường ray tài liệu hướng dẫn, và chỉ phát hiện ra rằng tôi có thể đã được misguided bởi tài liệu tất cả cùng. Tôi chỉ muốn xác nhận xem điều này có đúng không.Ruby on Rails hướng dẫn tài liệu về liên kết Activerecord không chính xác?
Nếu bạn truy cập http://guides.rubyonrails.org/association_basics.html và dưới 2,10. tự tham gia phần nó nói:
class Employee < ActiveRecord::Base
has_many :subordinates, :class_name => "Employee"
belongs_to :manager, :class_name => "Employee",
:foreign_key => "manager_id"
end
Bây giờ, tôi là một newbie và chỉ tin vào mã này (tôi có thể làm gì khác?) và viết một số mã đó là một biến thể của tự này tham gia vụ việc. Tuy nhiên, tôi càng nhìn vào nó thì càng cảm thấy không đúng. không phải là :subordinates
phải có trường :foreign_key
thay vì :manager
? Dù sao tôi vừa thay đổi nó sao cho mã giống như sau:
class Employee < ActiveRecord::Base
has_many :subordinates, :class_name => "Employee", :foreign_key => "manager_id"
belongs_to :manager, :class_name => "Employee"
end
và bây giờ nó đang hoạt động. Tui bỏ lỡ điều gì vậy? Hay là tài liệu chính thức sai? Thật khó để tin rằng tài liệu chính thức sẽ trình bày thông tin không chính xác nhưng có lẽ đó là cách của nó.
Vâng, bạn nói đúng. Một hiệp hội có tên là 'quản lý' dĩ nhiên sẽ giả định chính xác khóa ngoại lệ' manager_id'. Và sau đó hiệp hội 'cấp dưới' sẽ giống như vậy giả định rằng 'ngoại lệ' không hợp lệ' subordinate_id' để đó là cái cần thay đổi. – DanneManne
Tôi gửi cam kết cho tài liệu, sửa lỗi này – MikDiet
Tôi thấy cách: foreign_key => 'manager_id' được đặt chính xác.Đến chừng nào tôi biết ngoại lệ đi cùng với phần thuộc tính của quan hệ.I muốn xem ví dụ về những gì bạn gọi là "... và giờ nó đang hoạt động" .Tất nhiên, tôi có thể thiếu một thứ gì đó. – Daniel