Skip to content

Commit

Permalink
FIX: ensure image tracking custom fields have no dupes
Browse files Browse the repository at this point in the history
All these columns must never include duplicates for a single post
otherwise code breaks. All are defined in post.rb in the top in constants
but we usually prefer not to ref constants in case they change and migration
becomes inconsistent.
  • Loading branch information
SamSaffron committed Apr 24, 2019
1 parent 8673bd8 commit 8d697bb
Showing 1 changed file with 24 additions and 0 deletions.
24 changes: 24 additions & 0 deletions db/migrate/20190424065841_add_post_image_indexes.rb
@@ -0,0 +1,24 @@
class AddPostImageIndexes < ActiveRecord::Migration[5.2]
def change

%w{
large_images
broken_images
downloaded_images
}.each do |field|

execute <<~SQL
DELETE FROM post_custom_fields f
WHERE name = '#{field}' AND id > (
SELECT MIN(f2.id) FROM post_custom_fields f2
WHERE f2.post_id = f.post_id AND f2.name = f.name
)
SQL

add_index :post_custom_fields, [:post_id],
name: "post_custom_field_#{field}_idx",
unique: true,
where: "name = '#{field}'"
end
end
end

0 comments on commit 8d697bb

Please sign in to comment.