【发布时间】:2020-01-22 20:36:29
【问题描述】:
假设我有单表继承,BuyerInvoice 继承自 Invoice。
如果我将这样的发票分配给多态关联,Rails 将存储例如record_type: "Invoice" 而不是 record_type: "BuyerInvoice"。它存储record.class.base_class.name。
他们这样做的原因有哪些?我正在实现一些模糊相似的东西,并想了解 Rails 可能做出这个决定的原因。
我能想到的最好的一点是,在不影响关联的情况下重命名子类变得更容易一些,尽管这样做会更容易重命名抽象超类......
【问题讨论】:
-
STI 的一半要点是避免多态关联。
-
@max 它可以避免一些多态关联,但不能避免其他关联(
bookable.record_type/id,其中记录是例如发票或付款)。而且事实仍然是 Rails 以这种方式处理多态 STI,所以问题是:)
标签: ruby-on-rails