Ruby on Rails单表继承查找时,如何避免性能瓶颈问题?
- 内容介绍
- 文章标签
- 相关推荐
本文共计393个文字,预计阅读时间需要2分钟。
我有以下三个Rails类,它们都存储在一个表中,并使用Rails的单表继承。
rubyclass Template
class ThingTemplate class StockThingTemplate 如果有一个ID为150的StockThingTemplate,那么我应该如何查询它? class Template < ActiveRecord::Base
class ThingTemplate < Template
class StockThingTemplate < ThingTemplate
如果我有一个ID为150的StockThingTemplate,那么我应该能够在逻辑上做到这一点: ThingTemplate.find(150)
=> #returns me the StockThingTemplate
事实上,这有效 当它工作时,它会生成以下SQL查询: SELECT * FROM templates WHERE (templates.`id` = 159) AND ( (templates.`type` = 'ThingTemplate') OR (templates.`type` = 'StockThingTemplate' ) )
如果它不起作用,它会生成以下SQL查询: SELECT * FROM templates WHERE (templates.`id` = 159) AND ( (templates.`type` = 'ThingTemplate') )
sql正在做它应该做的事情,但问题是,为什么它一次生成一组SQL,另一次生成另一组.它的字面意思完全相同. 笔记: >我在轨道上1.2 它可以通过推杆来修复 require_dependency 'stock_thing_template'
在所有引用这些东西的控制器的顶部. More info on the rails wiki – 转到页面底部
>我已经在不同的地方尝试过’stock_thing_template’.它要么没有效果,要么引起其他问题
本文共计393个文字,预计阅读时间需要2分钟。
我有以下三个Rails类,它们都存储在一个表中,并使用Rails的单表继承。
rubyclass Template
class ThingTemplate class StockThingTemplate 如果有一个ID为150的StockThingTemplate,那么我应该如何查询它? class Template < ActiveRecord::Base
class ThingTemplate < Template
class StockThingTemplate < ThingTemplate
如果我有一个ID为150的StockThingTemplate,那么我应该能够在逻辑上做到这一点: ThingTemplate.find(150)
=> #returns me the StockThingTemplate
事实上,这有效 当它工作时,它会生成以下SQL查询: SELECT * FROM templates WHERE (templates.`id` = 159) AND ( (templates.`type` = 'ThingTemplate') OR (templates.`type` = 'StockThingTemplate' ) )
如果它不起作用,它会生成以下SQL查询: SELECT * FROM templates WHERE (templates.`id` = 159) AND ( (templates.`type` = 'ThingTemplate') )
sql正在做它应该做的事情,但问题是,为什么它一次生成一组SQL,另一次生成另一组.它的字面意思完全相同. 笔记: >我在轨道上1.2 它可以通过推杆来修复 require_dependency 'stock_thing_template'
在所有引用这些东西的控制器的顶部. More info on the rails wiki – 转到页面底部
>我已经在不同的地方尝试过’stock_thing_template’.它要么没有效果,要么引起其他问题

