Rails has_many:through:polymorphic関係の設定に少し問題があります。
私はこの主題がSOで十分に 文書化されていることを知っていますが、私の問題は構文ではなくモデルと外部キー名にあると思います。つまり、これは「コードを長く見すぎている」問題であり、別の問題が必要だと思います。目のセット。
とにかく私は次の設定をしています:
class Milestone < ActiveRecord::Base
has_many :responsible_items, :as => :responsibility
has_many :responsible, :through => :responsible_items
end
class ResponsibleItem < ActiveRecord::Base
belongs_to :responsible, :class_name => "User"
belongs_to :responsibility, :polymorphic => true
end
class User < ActiveRecord::Base
has_many :responsible_items, :foreign_key => :responsible_id
has_many :responsibilities, :through => :responsible_items
end
これは、マイルストーン側から見ると、エラーなしで正常に機能しているようです。たとえば、ターミナルで私は書くことができます:
Milestone.first.responsible
…そして、私が期待するように空のコレクションを取得します。
ただし、ユーザー側から見ると、次のように実行されます。
User.first.responsibilities
…ARエラーを返しています:
ActiveRecord::HasManyThroughAssociationPolymorphicSourceError: Cannot have a has_many :through association 'User#responsibilities' on the polymorphic object 'Responsibility#responsibility'.
この問題は、ユーザー関係を:responsibleと呼んでいるという事実と関係があると思います。これは正しいですか?
どんな助けでも大歓迎です、ありがとう。