Rails:多态型关系与否?

时间:2016-08-22 11:08:35

标签: ruby-on-rails activerecord polymorphism

我有三张桌子。

这些基本上是" Class Table Inheritance"。

  • 发票
  • CardInvoices
  • BanktransferInvoices

```

Invoices
--------
- id
- total_amount
- invoiceable (either a CardInvoice *or* a BanktransferInvoice)

CardInvoices
--------
- id
- fee_amount
- gateway_error
- ...


BanktransferInvoices
--------
- id
- ...

```

基本上这是一个has_one关系Invoice => BankInvoice/CardInvoice

但我必须从其他表中提取并将数据插入到这些表中。 (ETL的东西。) 所以我确实使用原始SQL来插入数据。

所以我怀疑" Polymathic型号"以上是干净与否,因为

  

首先,   必须插入元数据才能使其正常工作。 (例如Invoice_type)

     

其次,   无法应用约束。

     

第三,   直接加入不起作用。

所以我正在考虑改变指点方向。

Invoice <= BankInvoice / CardInvocie

有了这个,我可以使用直接连接,并检查约束。

现在的问题是,

使用第二种方法,如何在Rails 4.2中有效地使用BankInvoice / CardInvoice检索? (我是Rails的新手。我认为左外连接会很好。但添加的Invoice类型越多,开销就越大。)

或者您能否建议哪种实施方案更好,为什么会这样做。

谢谢,

0 个答案:

没有答案