没有Type的Rails多态关联(唯一id)

时间:2011-12-16 13:17:53

标签: ruby-on-rails-3 activerecord

在我的应用中,每个对象(表格)都有一个唯一的ID。

现在,正因如此,在使用ID时,我知道它是什么对象类型,无论是用户还是酒店。

我想知道是否可以在多态关联中保存item_type的查找,在内存中使用id序列查找修补查找,从而节省DB和索引中的空间。

可以这样做吗?

我正在使用Rails 3.0.9,Ruby 1.9.2

2 个答案:

答案 0 :(得分:1)

这可能不是您正在寻找的答案。我确信这在某种程度上是可能的,但是你要反对在ActiveRecord中设计多态的方式,这可能会导致一连串的痛苦。

我遇到的第一个问题是为什么?您要求进行性能优化。你看到了性能问题吗?您是否通过仪器,New Relic,Ruby分析器和其他工具进行了验证,这第二次查找确实会破坏您的性能?如果你还没有这样做,那么你可能会浪费你的时间。预测性能瓶颈是一门不准确的科学,并且遵循80-20规则。

如果你真的有这个问题并且你已经彻底分析了你的日志,你的New Relic图表,那么你已经将问题隔离开来,并针对它进行性能测试,如果你已经完成了所有这些,那么你我正在看这个问题的性能问题,然后我建议可能一个非规范化的解决方案会给你一些改进。非规范化是优化数据库性能问题的常用工具。您将在多个位置存储数据,但是您的查询将触及更少的表(更快),在更新记录(更复杂的应用程序代码)时保持多个位同步的额外开销。

如果你可以发布一些关于你的例子的更多细节,那么提出一些更具体的建议或举例来说会更容易。

答案 1 :(得分:1)

我认为这篇文章对您有用:

使用xid的Rails中的多态关联(整个系统中唯一的ID) http://blog.mustmodify.com/2009/07/polymorphic-associations-in-rails-using.html