У меня есть следующие 3 класса rails, которые все хранятся в одной таблице с использованием наследования Single table для rails.
class Template < ActiveRecord::Base
class ThingTemplate < Template
class StockThingTemplate < ThingTemplate
Если у меня есть StockThingTemplate
с идентификатором 150
, тогда я должен логически сделать это:
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 'stock_thing_template'
в разных местах. Это либо не имеет никакого эффекта, либо вызывает другие проблемы