mirror of
https://github.com/discourse/discourse.git
synced 2025-02-16 18:24:52 -06:00
FIX: ensure image tracking custom fields have no dupes
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.
This commit is contained in:
parent
8673bd832a
commit
8d697bbbd3
24
db/migrate/20190424065841_add_post_image_indexes.rb
Normal file
24
db/migrate/20190424065841_add_post_image_indexes.rb
Normal file
@ -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
|
Loading…
Reference in New Issue
Block a user