10

這個問題是關於多態關係的命名風格很好地命名多態關係

我的數據庫有三種類型的人:「公司」,客戶和員工。三者中的每一個都與任務和事件以及項目處於多態關係。

根據Rails的導向,這將是做這樣(我省略了一些類爲簡潔起見):

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 

我覺得以下將更爲語法和優雅......會是工作,如果是這樣,是否有一個原因,官方消息來源使用像projectable而不是像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

我檢查了關於關聯的Rails指南,它說:'belongs_to:taskable,:as =>:polymorphic'是錯誤的,應該是:'belongs_to:taskable,:polymorphic => true'。 – jdoe 2012-04-13 09:02:18

+0

@jdoe - 我已更正了代碼以反映這一點。感謝您的檢查。 – sscirrus 2012-04-13 09:30:56

回答

4

我個人儘量保持它儘可能通用。

所以:as => :owner確實對我更有意義。

在有疑問的情況下,我只是用

:as => :parent 

,我已經看到了一些項目。