【问题标题】:Naming polymorphic relationships well很好地命名多态关系
【发布时间】:2012-04-13 08:42:11
【问题描述】:

这个问题是关于多态关系的命名风格

我的数据库包含三种类型的人员:“公司”、客户和员工。这三个中的每一个都与任务和事件以及项目处于多态关系。

根据 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

【问题讨论】:

  • 我查看了 Rails 指南中的关联,它说:belongs_to :taskable, :as => :polymorphic 是错误的,应该是:belongs_to :taskable, :polymorphic => true
  • @jdoe - 我已经更正了代码以反映这一点。感谢您的检查。

标签: ruby-on-rails ruby-on-rails-3 coding-style polymorphic-associations


【解决方案1】:

我个人尽量保持其通用性。

所以:as => :owner 对我来说确实更有意义。

如有疑问,我会使用

:as => :parent

我已经在一些项目中看到过。

【讨论】:

    猜你喜欢
    • 2019-02-01
    • 2017-09-03
    • 1970-01-01
    • 1970-01-01
    • 2014-07-10
    • 2014-03-15
    • 2014-10-24
    • 2016-06-26
    • 2015-04-25
    相关资源
    最近更新 更多