次の 3 つの Rails クラスがあり、これらはすべて Rails の単一テーブル継承を使用して 1 つのテーブルに格納されています。
class Template < ActiveRecord::Base
class ThingTemplate < Template
class StockThingTemplate < ThingTemplate
StockThingTemplate
のIDを持っている場合、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'
ます。効果がないか、他の問題を引き起こします