1

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

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

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

  • 注释
  • 相片
  • 帖子
  • 地位
  • 更新

这些项目中的每一个都可以属于一个

  • 用户
  • 商业
  • 地点

例如“用户 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,并且正在努力解决这个问题。我非常感谢其他人的意见、经验和想法,以及任何指向有用信息或指南的指针。

谢谢!

4

2 回答 2

0

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

它有点旧,但实际上仍然

如果你使用正确的索引没有大的缺点,只是你的数据库中的列更少

于 2012-05-20T12:26:55.860 回答
-1

有趣的是,看看Ryan Bates 的Polymorphic Association(修订版)。我认为这将是您尝试做的事情的完美方法。又好又干净

于 2012-05-20T12:29:51.590 回答