STI を使用する複数のサブクラスを持つ親モデルアカウントがあります。belongs_to 関係を使用して、別のモデルTransactionをAccountに関連付けたいと考えています。参照されるアカウントは、AssetまたはLiabilityのいずれかです。
class Account < ActiveRecord::Base end
class Asset < Account end
class Liability < Account end
私の取引モデルは、アカウントに属している
class Transaction < ActiveRecord::Base
belongs_to :account #Either an Asset or Liability model
end
トランザクションのアカウントを資産または負債のいずれかに設定できるようにしたいと考えています。ただし、親クラスAccountではないため、トランザクションのアカウントを Asset または Liablity に設定すると TypeMismatch エラーが発生します。
注:これは、belongs_to 関連付けのポリモーフィズムを使用して解決できると思いますが、参照されるモデルがすべて同じ基になるテーブルを使用する場合、型列でクラスを指定する必要はないようです。