我正在构建一个具有一些复杂数据关系的 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,并且正在努力解决这个问题。我非常感谢其他人的意见、经验和想法,以及任何指向有用信息或指南的指针。
谢谢!