Этот вопрос касается стиля наименования полиморфных отношений.
В моей базе данных есть три типа лиц: "Компания", Клиент и Сотрудник. Каждый из трех находится в полиморфных отношениях с задачами и событиями и проектами.
В соответствии с направляющими 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