私はいくつかの関連する質問を読み、以下のように has_many :through + polymorphic との関係を設定しようとしました。
class Item < ActiveRecord::Base
has_many :authorships, :as => :target
has_many :authors, :through => :authorships
end
class Author < ActiveRecord::Base
has_many :authorships
has_many :items, :through => :authorships, :source => :target, :source_type => 'Item'
end
class Authorship < ActiveRecord::Base
belongs_to :author
belongs_to :target, :polymorphic => true
end
「Authorship」の移行ファイルは次のとおりです。
create_table :authorships do |t|
t.integer :author_id
t.string :target_type
t.integer :target_id
t.timestamps
end
以下のようなデータを追加しました。
a = Authorship.new
a.target = @item
a.author = @author
a.save
データを確認すると、これは正常に機能します。
Author.first.items
これはnilを返しますが。
Item.first.authors
エラーが見つかりませんでした。私を助けてください!