我正在构建一个具有一些复杂数据关系的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,我正在努力解决这个问题。我非常感谢其他人的意见,经验和想法,以及任何有用信息或指南的指示。
谢谢!
答案 0 :(得分:0)
http://blog.smartlogicsolutions.com/2008/06/13/ruby-on-rails-polymorphic-association-benchmarks/
它有点旧但仍然是实际的
如果使用正确的索引,只有较少的列
,那么没有什么大的缺点答案 1 :(得分:-1)
有趣的是,请看看Ryan Bates的Polymorphic Association (revised)。我认为这将是你想要做的事情的完美方法。很好也很干净