ruby-on-rails-3 - Rails 没有 Type 的多态关联(唯一 id)

标签 ruby-on-rails-3 activerecord

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

现在,因此,当使用查看 id 时,我知道它是什么对象类型,无论是用户还是酒店。

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

这可以做到吗?

我正在使用 Rails 3.0.9、Ruby 1.9.2

最佳答案

这可能不是您正在寻找的答案。我确信这在某种程度上是可能的,但是您将与 ActiveRecord 中多态性的设计方式作斗争,这可能会导致大量的痛苦。

我想到的第一个问题是为什么?您要求性能优化。您是否发现性能问题?您是否使用仪器、New Relic、Ruby 分析器和其他工具验证了第二次查找确实是影响您性能的原因?如果您还没有这样做,那么您可能是在浪费时间。预测性能瓶颈是一门不准确的科学,并且受制于 80-20 规则。

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

如果您可以发布有关示例的更多详细信息,那么提出一些更具体的建议或给出示例会更容易。

关于ruby-on-rails-3 - Rails 没有 Type 的多态关联(唯一 id),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8534719/

相关文章:

sql - 如何使用 NuoDB 在 Ruby On Rails 中手动执行 SQL 命令

sql - 选择在 Rails 中创建的最后一个唯一多态对象

ruby-on-rails-3 - 如何在 ActiveAdmin 中处理多个嵌套资源?

ruby - Rails3 路由错误。没有路由匹配 { :action= >"destroy"

asp.net-mvc - MVC 处理嵌套操作方法?

ruby-on-rails - 什么方法将从类方法返回 ActiveRecord 所有者对象?

ruby-on-rails - 确定 ruby​​ 循环中的 json 键/值何时需要逗号?

ruby-on-rails - 具有方法值比较的 Rails 作用域

ruby-on-rails - 仅当不是新用户时如何使用 Rails 验证

css - Phusion Passenger 会使我的 CSS 渲染与 Rails 3.2 中的本地服务器开发不同吗?