3

我有一个使用 STI 的具有多个子类的父模型帐户。我想将另一个模型Transaction使用 belongs_to 关系关联到Account。引用的帐户可以是AssetLiability

class Account < ActiveRecord::Base end
class Asset < Account end
class Liability < Account end

我的交易模型belongs_to Account

class Transaction < ActiveRecord::Base
  belongs_to :account #Either an Asset or Liability model
end

我希望能够将交易帐户设置为资产或负债。但是,当我将交易的帐户设置为 Asset 或 Liablity 时出现 TypeMismatch 错误,因为它不是父类Account

注意:我认为这可以使用 belongs_to 关联上的多态性来解决,但是当引用的模型都使用相同的基础表时,似乎没有必要在类型列中指定类。

4

1 回答 1

2

事实证明,这段代码按原样工作。您无需为 STI 模型指定关联模型上的多态类型。

我收到的类型不匹配错误是因为我的 STI 基类实际上是“Account::Base”,而我只是将“Account”作为类名。

于 2011-01-31T05:39:56.400 回答