قام أحد الإضافات لدينا بتغيير الطابع الزمني كطريقة لرفع موضوع عن البقاء في المقدمة، وأردت التراجع عن هذا التغيير. لقد كتبت مهمة Rake تقوم بذلك. إنها مسألة صغيرة، لكن لماذا لا نشاركها؟
# /var/www/discourse/lib/tasks/set_timestamp_to_last_version.rake
وصف "تعيين الطابع الزمني لجميع المشاركات في موضوع إلى last_version_at للمشاركة"
مهمة "set_timestamp_to_last_version"، [:topic_id] => :environment do |_, args|
topic_id = args[:topic_id]
إذا لم يكن topic_id
puts "خطأ: متوقع تشغيل rake set_timestamp_to_last_version[topic_id]"
خروج 1
end
Post.where(topic_id: topic_id).each do |p|
p.created_at = p.last_version_at
p.updated_at = p.last_version_at
إذا لم يكن p.save
puts "خطأ حفظ مشاركة على #{p.id}"
end
end
p_first = Post.where(topic_id: topic_id).first
p_last = Post.where(topic_id: topic_id).last
t = Topic.where(id: topic_id).first
t.created_at = p_first.last_version_at
t.updated_at = p_last.last_version_at
t.bumped_at = p_last.last_version_at
t.last_posted_at = p_last.last_version_at
إذا لم يكن t.save
puts "خطأ حفظ مشاركة على #{t.id}"
end
end
@zogstrip thoughts on pr-welcome? It’d be great for this to be on Github instead of needing to copy/paste from here if @yanokwa is willing to write one.
I only have a vague recollection of what went wrong, but I’ll try…
In Dec 2017, we accidentally moved our introductions topic (started in Jun 2017 and has daily posts) to Dec 2017. And it did what was expected in that it moved the first post to Dec 2017 and added the other posts sequentially. But it looked funny, in that all the posts had been squished into Dec 2017. I tried to move things back to Jun 2017, but then the squishing put al the posts into Jun 2017 instead of spreading them from Jun to Dec.
Again, this is what I think happened. Either way, I didn’t have time to figure it all out, so I wanted to restore the posts to their original date and when I poked around in the DB, this is what I came up with.
As far as things that would be good to add to the UI, I’d say:
If this squishing is reproducible, allow an undo of a timestamp change in the way I’ve done above.