Defect #41572 » 41572-v2.patch
| app/models/user.rb | ||
|---|---|---|
| 945 | 945 |
Issue.where(['author_id = ?', id]).update_all(['author_id = ?', substitute.id]) |
| 946 | 946 |
Issue.where(['assigned_to_id = ?', id]).update_all('assigned_to_id = NULL')
|
| 947 | 947 |
Journal.where(['user_id = ?', id]).update_all(['user_id = ?', substitute.id]) |
| 948 |
Journal.where(['updated_by_id = ?', id]).update_all(['updated_by_id = ?', substitute.id]) |
|
| 948 | 949 |
JournalDetail. |
| 949 | 950 |
where(["property = 'attr' AND prop_key = 'assigned_to_id' AND old_value = ?", id.to_s]). |
| 950 | 951 |
update_all(['old_value = ?', substitute.id.to_s]) |
| db/migrate/20241026031710_update_orphaned_journal_updated_by_id_to_anonymous.rb | ||
|---|---|---|
| 1 |
class UpdateOrphanedJournalUpdatedByIdToAnonymous < ActiveRecord::Migration[7.2] |
|
| 2 |
def up |
|
| 3 |
# Don't use `User.anonymous` here because it creates a new anonymous |
|
| 4 |
# user if one doesn't exist yet. |
|
| 5 |
anonymous_user_id = AnonymousUser.unscoped.pick(:id) |
|
| 6 |
# The absence of an anonymous user implies a fresh installation. |
|
| 7 |
return if anonymous_user_id.nil? |
|
| 8 | ||
| 9 |
Journal.joins('LEFT JOIN users ON users.id = journals.updated_by_id')
|
|
| 10 |
.where.not(updated_by_id: nil) |
|
| 11 |
.where(users: { id: nil })
|
|
| 12 |
.update_all(updated_by_id: anonymous_user_id) |
|
| 13 |
end |
|
| 14 | ||
| 15 |
def down |
|
| 16 |
# no-op |
|
| 17 |
end |
|
| 18 |
end |
|
| test/unit/user_test.rb | ||
|---|---|---|
| 308 | 308 |
def test_destroy_should_update_journals |
| 309 | 309 |
issue = Issue.generate!(:project_id => 1, :author_id => 2, |
| 310 | 310 |
:tracker_id => 1, :subject => 'foo') |
| 311 |
# Prepare a journal with both user_id and updated_by_id set to 2 |
|
| 311 | 312 |
issue.init_journal(User.find(2), "update") |
| 312 | 313 |
issue.save! |
| 314 |
journal = issue.journals.first |
|
| 315 |
journal.update_columns(updated_by_id: 2) |
|
| 313 | 316 | |
| 314 | 317 |
User.find(2).destroy |
| 315 | 318 |
assert_nil User.find_by_id(2) |
| 316 |
assert_equal User.anonymous, issue.journals.first.reload.user |
|
| 319 |
journal.reload |
|
| 320 |
assert_equal User.anonymous, journal.user |
|
| 321 |
assert_equal User.anonymous, journal.updated_by |
|
| 317 | 322 |
end |
| 318 | 323 | |
| 319 | 324 |
def test_destroy_should_update_journal_details_old_value |
- « Previous
- 1
- 2
- 3
- 4
- Next »