この方法で関連付けを設定しました。
class Program
has_many :program_activities, dependent: :destroy
has_many :recent_activities, through: :program_activities, source: :recent_activity
end
class RecentActivity
has_many :program_activities, dependent: :destroy
end
プログラム オブジェクトに関連付けられている recent_activities を削除したかったのです。
program.recent_activities.destroy_all
しかし、上記のクエリは実際には program_activities を削除するだけで (destroy ではなく削除することに注意してください)、recent_activities オブジェクトはそのままにしておきます。
これは、Rails コンソール クエリを調べることで見つかりました。destroy_all メソッドに何か問題がありますか、または実際に関連付けを正しく設定していませんか。