1

我有一个名为的名称间隔模型Accounting::Invoice

我也有一个模型叫Contact

AnAccounting::Invoice通过另一种称为的模型拥有许多联系人Contactable——这是在发票被拆分到多个联系人的情况下。

但由于某种原因,我无法让has_many through协会运作。

我可以让它在一个方向上工作,例如:Contact.first.accounting_invoices,但另一方面,例如:Accounting::Invoices.first.contacts给我一个看起来像这样的错误:

SQLite3::SQLException: no such column: contactables.invoice_id...

有任何想法吗?我不确定 ActiveRecord 在哪里contactabes.invoice_id。我已经明确定义了我的表名和类名,以尊重地使用accounting_invoices表和类。Accounting::Invoice

4

1 回答 1

1

您可以使用该:foreign_key => 'accounting_invoice_id选项告诉 rails 使用哪个字段。查看文档以has_many获取更多信息 (http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html#method-i-has_many)。

相关部分是:

:foreign_key
Specify the foreign key used for the association. By default this is guessed to be the name of this class in lower-case and “_id” suffixed. So a Person class that makes a has_many association will use “person_id” as the default :foreign_key.
于 2013-01-01T15:27:56.900 回答