Add a migration to update existing journals where updated_by_id points to a deleted user (#41572).

git-svn-id: https://svn.redmine.org/redmine/trunk@23170 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
Go MAEDA
2024-10-29 01:11:29 +00:00
parent a253cd1636
commit 9161be759a

View File

@@ -0,0 +1,18 @@
class UpdateOrphanedJournalUpdatedByIdToAnonymous < ActiveRecord::Migration[7.2]
def up
# Don't use `User.anonymous` here because it creates a new anonymous
# user if one doesn't exist yet.
anonymous_user_id = AnonymousUser.unscoped.pick(:id)
# The absence of an anonymous user implies a fresh installation.
return if anonymous_user_id.nil?
Journal.joins('LEFT JOIN users ON users.id = journals.updated_by_id')
.where.not(updated_by_id: nil)
.where(users: { id: nil })
.update_all(updated_by_id: anonymous_user_id)
end
def down
# no-op
end
end