Câu hỏi này là về kiểu đặt tên của các mối quan hệ đa hình.Đặt tên các mối quan hệ đa hình tốt
Cơ sở dữ liệu của tôi có ba loại người: 'Công ty', Khách hàng và Nhân viên. Mỗi một trong ba mối quan hệ đa hình với nhiệm vụ và sự kiện, và dự án.
Theo hướng dẫn Rails, điều này sẽ được thực hiện như thế nào (Tôi đã bỏ qua một số lớp học cho ngắn gọn):
Person.rb
has_many :tasks, :as => :taskable
has_many :events, :as => :eventable
has_many :projects, :as => :projectable # awkward names
Task.rb
belongs_to :taskable, :polymorphic => true
These lead to the rather strange:
@person = @task.taskable
Tôi cảm thấy rằng sau đây sẽ được xa hơn về ngữ pháp và thanh lịch ... sẽ nó công việc, và nếu có, có lý do nào mà các nguồn chính thức sử dụng các từ như projectable
thay vì các từ như owner
?
Person.rb
has_many :tasks, :as => :owner
has_many :events, :as => :owner
has_many :projects, :as => :owner
Task.rb
belongs_to :owner, :polymorphic => true
This creates the elegant:
@person_1 = @task.owner
@person_2 = @project.owner
Tôi đã kiểm tra hướng dẫn Rails về các liên kết và nó nói rằng: 'attribute_to: taskable,: as =>: polymorphic' là sai và phải là:' attribute_to: taskable,: polymorphic => true'. – jdoe
@jdoe - Tôi đã sửa mã để phản ánh điều đó. Cảm ơn vì đã kiểm tra. – sscirrus