0

私は現在、所有者属性を定義するためのカスタムメソッドを持つ車両のモデルを持っています:

def owners
    @owners = sales.map(&:customer) + quotes.map(&:customer)
    @owners = @owners.uniq
end

このメソッドは問題なく機能しているようで、車両の所有者の配列を返します。

ownersただし、このメソッドが生成する を別のモデルで使用したい場合に問題が発生します。別のモデルでこれを行うと:

has_many :owners, :through => :vehicles

これにより、次のエラーが生成されます。

ActiveRecord::HasManyThroughSourceAssociationNotFoundError: Could not find the source association(s) :owner or :owners in model Vehicle.

追加しようとしまし:source => :ownersたが、同じエラーが発生します。

:owners私はattr_accessibleに持っていることを指摘する必要があります。

では、所有者が通常の変数ではなく、カスタム メソッドで定義されている場合、:through 関連付けを行うことはできますか?

4

2 に答える 2

0

Rails Api によると、through: オプションでは、クエリを実行するための関連付けを指定する必要があります。結合テーブルの車両に基づいてこの所有者の関連付けを見つけようとしていますが、存在しないため見つかりません。あなたのアプローチは、Rails の HasMany-Builder に深く入り込まなければ機能しないと思います。

于 2012-11-01T16:14:27.230 に答える