多くの構造を持つプレーヤーと、そのプレーヤーに属する構造が必要です。構造は多態的な関係です。
class Player < ActiveRecord::Base
has_many :player_structures
has_many :structures, :through => player_structures
end
class PlayerStructures < ActiveRecord::Base
belongs_to :structure, polymorphic: true
belongs_to :player
end
class StructureA < ActiveRecord::Base
has_one :player_structure, :as => :structure
has_one :player, :through => :player_structure
end
class StructureB < ActiveRecord::Base
has_one :player_structure, :as => :structure
has_one :player, :through => :player_structure
end
しかし、私が引き出してPlayer.first
その構造を求めると、次のようになります。
ActiveRecord::HasManyThroughAssociationPolymorphicSourceError: Cannot have a has_many :through association 'Player#structures' on the polymorphic object 'Structure#structure'.
ただし、IDを持つすべてのplayer_structuresを検索し、structure_idとstructure_typeに基づいて構造をフェッチするSQLクエリを生成できる必要があります。これが失敗するのはなぜですか。また、ポリモーフィック結合テーブルを有効に作成するにはどうすればよいですか。
アップデート
手動で実行したいことを実行すると、次のように機能します。
player_structures.collect(&:structure)
レール、そうじゃないの?