Ich habe einen phpbb3-Import für eine Website durchgeführt. Der Admin-Benutzer hat Tausende von Beiträgen, und das wird auf der Benutzerzusammenfassungsseite und unter https://estude.profcaju.com/u/USER/activity angezeigt, aber wenn dieser Benutzer /posted besucht, erhält er nur Themen seit dem Import.
Wenn ich mir ein importiertes Thema ansehe, das vom Benutzer erstellt wurde, und das Topicuser für dieses Thema/diesen Benutzer aufrufe, ist posted auf false gesetzt. Ich habe alle ensure_consistency-Dinge ausgeführt, die ich finden kann (TopicUser, Topic, User).
Wenn ich posted in einem TopicUser auf true setze, wird es unter /posted angezeigt.
Sollte ich etwas wie TopicUser.where(user_id: 1).update_all(posted: true) tun? Sollte ich das für alle Benutzer tun?
Es scheint ein Problem mit der ensure_consistency-Rake-Aufgabe zu geben. Ich habe gerade eine Migration überprüft, an der ich gerade arbeite (die ensure_consistency-Aufgabe noch nicht ausgeführt) und die TopicUser-Datensätze wurden bereits mit posted: false (dem Standardwert) erstellt. Wenn die Rake-Aufgabe diesen Punkt erreicht, wird ein Fehler vom Typ „duplicate key“ generiert und die Datensätze werden aufgrund von ON CONFLICT DO NOTHING nicht erstellt.
def insert_topic_users
log "Inserting topic users..."
DB.exec <<-'SQL'
INSERT INTO topic_users (user_id, topic_id, posted, last_read_post_number, first_visited_at, last_visited_at, total_msecs_viewed)
SELECT user_id, topic_id, 't' , MAX(post_number), MIN(created_at), MAX(created_at), COUNT(id) * #{MS_SPEND_CREATING_POST}
FROM posts
WHERE user_id > 0
GROUP BY user_id, topic_id
ON CONFLICT DO NOTHING
SQL
end