| @@ -1,5 +1,19 @@ | |||||
| class AddDiscardToPostTags < ActiveRecord::Migration[8.0] | class AddDiscardToPostTags < ActiveRecord::Migration[8.0] | ||||
| def change | |||||
| def up | |||||
| execute <<~SQL | |||||
| DELETE | |||||
| pt1 | |||||
| FROM | |||||
| post_tags pt1 | |||||
| INNER JOIN | |||||
| post_tags pt2 | |||||
| ON | |||||
| pt1.post_id = pt2.post_id | |||||
| AND pt1.tag_id = pt2.tag_id | |||||
| AND pt1.id > pt2.id | |||||
| ; | |||||
| SQL | |||||
| add_column :post_tags, :discarded_at, :datetime | add_column :post_tags, :discarded_at, :datetime | ||||
| add_index :post_tags, :discarded_at | add_index :post_tags, :discarded_at | ||||
| @@ -15,4 +29,8 @@ class AddDiscardToPostTags < ActiveRecord::Migration[8.0] | |||||
| add_index :post_tags, [:post_id, :discarded_at] | add_index :post_tags, [:post_id, :discarded_at] | ||||
| add_index :post_tags, [:tag_id, :discarded_at] | add_index :post_tags, [:tag_id, :discarded_at] | ||||
| end | end | ||||
| def down | |||||
| raise ActiveRecord::IrreversibleMigration, '戻せません.' | |||||
| end | |||||
| end | end | ||||