1

私は名前空間モデルを持っていますAccounting::Invoice

というモデルも持っています。Contact

Accounting::Invoiceと呼ばれる別のモデルを通じて多くの連絡先がありContactableます。これは、請求書が複数の連絡先に分割されている場合です。

しかし、何らかの理由で、has_many through関連付けを機能させることができません。

一方向 ex: で動作させることができますが、逆方向に進むと ex: Contact.first.accounting_invoicesAccounting::Invoices.first.contacts次のようなエラーが表示されます。

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

何か案は?ActiveRecord がどこで取得されているのかわかりませんcontactabes.invoice_idaccounting_invoicesテーブルとAccounting::Invoiceクラスを尊重して使用するために、テーブル名とクラス名を明示的に定義しました。

4

1 に答える 1

1

オプションを使用して、:foreign_key => 'accounting_invoice_id使用するフィールドをレールに伝えることができます。詳細については、ドキュメントを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 に答える