Rail应用程序中双向多态关系的缺点是什么?

时间:2012-05-20 12:19:24

标签: ruby-on-rails polymorphic-associations

我正在构建一个具有一些复杂数据关系的Rail 3.2应用程序。我想知道构建数据库的最佳方法是什么。

我试图建模的数据可以与Facebook的元素进行比较。

例如,用户可以创建项目:

  • 评论
  • 照片
  • 帖子
  • 状态
  • 更新

这些项目中的每一项都属于

  • 用户
  • business
  • 位置

因此,例如“用户A在巴黎麦克唐纳拍了一张照片”。

我想在每个用户,商家和位置页面上显示活动流。

我想到这样做的方式涉及双向多态关系。

活动之一:

class ActivityFeed
  belongs_to :feedable, :polymorphic => true
end

class Comment | Photo | Status
  has_many :activity_feeds, :as => :feedable
end

和一个所有权

class ActivityOwner
  belongs_to :ownable, :polymorphic => true
end

class User | Business | Location
  has_many :activity_owners, :as => :ownable
end

然后activity_owner属于activity_feed,而activity_feed将有许多activity_owner。

我希望这有道理吗?

这是解决此案的好方法吗?我应该考虑哪些性能问题?还有更好的方法吗?

后续问题:使用这种方法,是否可以以多种方式将同一模型映射到多态关系。例如,用户可以是照片的所有者,他们可以是标记用户。

我仍然试图学习Rails,我正在努力解决这个问题。我非常感谢其他人的意见,经验和想法,以及任何有用信息或指南的指示。

谢谢!

2 个答案:

答案 0 :(得分:0)

http://blog.smartlogicsolutions.com/2008/06/13/ruby-on-rails-polymorphic-association-benchmarks/

它有点旧但仍然是实际的

如果使用正确的索引,只有较少的列

,那么没有什么大的缺点

答案 1 :(得分:-1)

有趣的是,请看看Ryan Bates的Polymorphic Association (revised)。我认为这将是你想要做的事情的完美方法。很好也很干净