replacements: initialize media_asset_id, old_media_asset_id columns.
This commit is contained in:
@@ -36,6 +36,7 @@ class PostReplacementProcessor
|
|||||||
replacement.image_height = media_asset.image_height
|
replacement.image_height = media_asset.image_height
|
||||||
replacement.image_width = media_asset.image_width
|
replacement.image_width = media_asset.image_width
|
||||||
replacement.md5 = media_asset.md5
|
replacement.md5 = media_asset.md5
|
||||||
|
replacement.media_asset = media_asset
|
||||||
|
|
||||||
post.lock!
|
post.lock!
|
||||||
post.md5 = media_asset.md5
|
post.md5 = media_asset.md5
|
||||||
|
|||||||
@@ -3,6 +3,8 @@
|
|||||||
class PostReplacement < ApplicationRecord
|
class PostReplacement < ApplicationRecord
|
||||||
belongs_to :post
|
belongs_to :post
|
||||||
belongs_to :creator, class_name: "User"
|
belongs_to :creator, class_name: "User"
|
||||||
|
belongs_to :media_asset, optional: true
|
||||||
|
belongs_to :old_media_asset, optional: true, class_name: "MediaAsset"
|
||||||
|
|
||||||
before_validation :initialize_fields, on: :create
|
before_validation :initialize_fields, on: :create
|
||||||
before_create :process!
|
before_create :process!
|
||||||
@@ -17,6 +19,7 @@ class PostReplacement < ApplicationRecord
|
|||||||
self.old_image_width = post.image_width
|
self.old_image_width = post.image_width
|
||||||
self.old_image_height = post.image_height
|
self.old_image_height = post.image_height
|
||||||
self.old_md5 = post.md5
|
self.old_md5 = post.md5
|
||||||
|
self.old_media_asset = post.media_asset
|
||||||
end
|
end
|
||||||
|
|
||||||
concerning :Search do
|
concerning :Search do
|
||||||
|
|||||||
21
script/fixes/128_backfill_replacement_media_asset_ids.rb
Executable file
21
script/fixes/128_backfill_replacement_media_asset_ids.rb
Executable file
@@ -0,0 +1,21 @@
|
|||||||
|
#!/usr/bin/env ruby
|
||||||
|
|
||||||
|
require_relative "base"
|
||||||
|
|
||||||
|
with_confirmation do
|
||||||
|
fix = ENV.fetch("FIX", "false").truthy?
|
||||||
|
cond = ENV.fetch("COND", "TRUE")
|
||||||
|
|
||||||
|
replacements = PostReplacement.where("(media_asset_id IS NULL AND md5 IS NOT NULL) OR (old_media_asset_id IS NULL AND old_md5 IS NOT NULL)").where(cond)
|
||||||
|
|
||||||
|
replacements.find_each do |replacement|
|
||||||
|
new_media_asset = MediaAsset.active.find_by(md5: replacement.md5)
|
||||||
|
old_media_asset = MediaAsset.active.find_by(md5: replacement.old_md5)
|
||||||
|
|
||||||
|
replacement.media_asset = new_media_asset if replacement.media_asset.nil?
|
||||||
|
replacement.old_media_asset = old_media_asset if replacement.old_media_asset.nil?
|
||||||
|
|
||||||
|
puts ({ replacement: replacement.id, md5: replacement.md5, old_md5: replacement.old_md5, changes: replacement.changes, }).to_json
|
||||||
|
replacement.save!(touch: false) if fix && replacement.changed?
|
||||||
|
end
|
||||||
|
end
|
||||||
Reference in New Issue
Block a user