10

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 
+1

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

+0

@jdoe - Tôi đã sửa mã để phản ánh điều đó. Cảm ơn vì đã kiểm tra. – sscirrus

Trả lời

4

Cá nhân tôi cố gắng giữ nó càng chung càng tốt.

Vì vậy, :as => :owner có ý nghĩa hơn với tôi.

Trong trường hợp nghi ngờ, tôi chỉ cần sử dụng

:as => :parent 

mà tôi đã nhìn thấy trong một số dự án.

Các vấn đề liên quan