ssc*_*rus 10 coding-style ruby-on-rails polymorphic-associations ruby-on-rails-3
这个问题是关于多态关系的命名风格.
我的数据库有三种类型的人:"公司",客户和员工.三者中的每一个都与任务和事件以及项目具有多态关系.
根据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
Run Code Online (Sandbox Code Playgroud)
我觉得以下内容会更具语法性和优雅性......它会起作用,如果是这样,官方消息来源是否有使用单词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
Run Code Online (Sandbox Code Playgroud)
我个人尽量保持它的通用性。
所以:as => :owner对我来说更有意义。
如有疑问,我只会使用
:as => :parent
Run Code Online (Sandbox Code Playgroud)
我已经在一些项目中看到过。
| 归档时间: |
|
| 查看次数: |
1178 次 |
| 最近记录: |