FIX: Join bookmarks migration on users to avoid missing user records
* the post_actions table has no FK to users, so if a user has been deleted we may end up with dangling post_action records, which then interferes with the bookmarks migration because bookmarks DO have an FK to users
This commit is contained in:
parent
062cb1e1cb
commit
779dc30d2e
|
@ -16,6 +16,7 @@ class CreateBookmarksFromPostActionBookmarks < ActiveRecord::Migration[6.0]
|
||||||
INNER JOIN posts ON posts.id = post_actions.post_id
|
INNER JOIN posts ON posts.id = post_actions.post_id
|
||||||
LEFT JOIN bookmarks ON bookmarks.post_id = post_actions.post_id AND bookmarks.user_id = post_actions.user_id
|
LEFT JOIN bookmarks ON bookmarks.post_id = post_actions.post_id AND bookmarks.user_id = post_actions.user_id
|
||||||
INNER JOIN topics ON topics.id = posts.topic_id
|
INNER JOIN topics ON topics.id = posts.topic_id
|
||||||
|
INNER JOIN users ON users.id = post_actions.user_id
|
||||||
WHERE bookmarks.id IS NULL AND post_action_type_id = :type_id AND post_actions.deleted_at IS NULL AND posts.deleted_at IS NULL
|
WHERE bookmarks.id IS NULL AND post_action_type_id = :type_id AND post_actions.deleted_at IS NULL AND posts.deleted_at IS NULL
|
||||||
LIMIT 2000
|
LIMIT 2000
|
||||||
SQL
|
SQL
|
||||||
|
|
|
@ -22,6 +22,7 @@ task "bookmarks:sync_to_table" => :environment do |_t, args|
|
||||||
INNER JOIN posts ON posts.id = post_actions.post_id
|
INNER JOIN posts ON posts.id = post_actions.post_id
|
||||||
LEFT JOIN bookmarks ON bookmarks.post_id = post_actions.post_id AND bookmarks.user_id = post_actions.user_id
|
LEFT JOIN bookmarks ON bookmarks.post_id = post_actions.post_id AND bookmarks.user_id = post_actions.user_id
|
||||||
INNER JOIN topics ON topics.id = posts.topic_id
|
INNER JOIN topics ON topics.id = posts.topic_id
|
||||||
|
INNER JOIN users ON users.id = post_actions.user_id
|
||||||
WHERE bookmarks.id IS NULL AND post_action_type_id = :type_id AND post_actions.deleted_at IS NULL AND posts.deleted_at IS NULL
|
WHERE bookmarks.id IS NULL AND post_action_type_id = :type_id AND post_actions.deleted_at IS NULL AND posts.deleted_at IS NULL
|
||||||
LIMIT 2000
|
LIMIT 2000
|
||||||
SQL
|
SQL
|
||||||
|
|
Loading…
Reference in New Issue