J'ai les classes de 3 rails suivantes, qui sont toutes stockées dans une table, en utilisant l'héritage Single table de rails.Problèmes de recherche d'héritage de table unique
class Template < ActiveRecord::Base
class ThingTemplate < Template
class StockThingTemplate < ThingTemplate
Si j'ai un StockThingTemplate
avec ID de 150
alors je devrait logiquement être en mesure de le faire:
ThingTemplate.find(150)
=> #returns me the StockThingTemplate
En fait cela fonctionne, parfois
Quand il fonctionne, il génère la requête SQL suivante:
SELECT * FROM templates WHERE (templates.`id` = 159) AND ((templates.`type` = 'ThingTemplate') OR (templates.`type` = 'StockThingTemplate'))
Quand il ne fonctionne pas, il génère la requête SQL suivante:
SELECT * FROM templates WHERE (templates.`id` = 159) AND ((templates.`type` = 'ThingTemplate'))
Le sql fait ce qu'il est censé, mais la question est, pourquoi est-il génère un ensemble de SQL une fois, et un ensemble différent une autre fois. C'est littéralement le même code.
Notes:
- Je suis sur des rails 1,2
- Je l'ai déjà essayé
require 'stock_thing_template'
en divers endroits. Il n'a pas d'effet ou provoque d'autres problèmes
Merci beaucoup. Cela a résolu mon problème aussi! – JasonSmith