ruby-on-rails – 单表继承查找问题
发布时间:2020-12-17 01:23:58 所属栏目:百科 来源:网络整理
导读:我有以下3个rails类,它们都存储在一个表中,使用rails的单表继承. class Template ActiveRecord::Baseclass ThingTemplate Templateclass StockThingTemplate ThingTemplate 如果我有一个ID为150的StockThingTemplate,那么我应该能够在逻辑上做到这一点: Thi
我有以下3个rails类,它们都存储在一个表中,使用rails的单表继承.
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 解决方法
好.事实证明这是因为rails不会一直看到整个继承层次结构.当它在每个请求上重新加载所有项目时,这解释了不一致的行为(在某些地方,before_filter可能导致模型加载,在其他地方可能没有).
它可以通过推杆来修复 require_dependency 'stock_thing_template' 在所有引用这些东西的控制器的顶部. More info on the rails wiki – 转到页面底部 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |