【发布时间】:2010-07-15 18:39:29
【问题描述】:
我正在开展一个项目,其中许多 ActiveRecord 模型都可以与之关联对话。用户可以讨论网站的几乎所有方面。关于如何实现,我有两个想法。
1) 在资产中使用belongs_to,而不是对话——对话将完全不知道它的资产
class Product< ActiveRecord::Base
belongs_to :conversation
end
class PurchaseOrder < ActiveRecord::Base
belongs_to :conversation
end
2) 在对话中使用belongs_to, :polymorphic => true
class Conversation < ActiveRecord::Base
belongs_to :asset, :polymorphic => true
end
class Product < ActiveRecord::Base
has_one :conversation, :as => :asset
end
class PurchaseOrder < ActiveRecord::Base
has_one :conversation, :as => :asset
end
建模这种关系的正确方法是什么?如果我要陈述这种关系,我会说“一个产品/采购订单可能有一个对话”。
【问题讨论】:
标签: ruby-on-rails activerecord polymorphic-associations has-one