这个问题是关于多态关系的命名风格。
我的数据库有三种类型的人:“公司”、客户和员工。这三个中的每一个都与任务和事件以及项目处于多态关系。
根据 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
我觉得以下内容会更加语法和优雅......它会起作用吗?如果是这样,官方消息来源是否有理由使用 likeprojectable
而不是 like 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