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 

,我已经看到了一些项目。