Skip to content
Extraits de code Groupes Projets
Valider 472340e5 rédigé par Florian Staudacher's avatar Florian Staudacher
Parcourir les fichiers

add rake tasks for cleaning up mixed-case hashtags,

fix querying tagged models, in case multiple tags are found
----
the first rake task will attach all posts tagged with mixed-
case hashtags to their lower-case variant

    $ bundle exec rake migrations:rewire_uppercase_hashtags

the other rake task will remove the - now unused - mixed-case
hashtags from the db

    $ bundle exec rake migrations:remove_uppercase_hashtags

as always, perform a backup first! ;)
parent 5c534521
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -52,11 +52,11 @@ class Stream::Tag < Stream::Base
def construct_post_query
posts = StatusMessage
if user.present?
if user.present?
posts = posts.owned_or_visible_by_user(user)
else
posts = posts.all_public
end
posts.tagged_with(tag_name)
posts.tagged_with(tag_name, :any => true)
end
end
......@@ -74,4 +74,39 @@ namespace :migrations do
}
end
# removes hashtags with uppercase letters and re-attaches
# the posts to the lowercase version
task :rewire_uppercase_hashtags => :environment do
evil_tags = ActsAsTaggableOn::Tag.where("lower(name) != name")
puts "found #{evil_tags.count} tags to convert..."
evil_tags.each_with_index do |tag, i|
good_tag = ActsAsTaggableOn::Tag.find_or_create_by_name(tag.name.downcase)
puts "++ '#{tag.name}' has #{tag.taggings.count} records attached"
deleteme = []
tag.taggings.each do |tagging|
deleteme << tagging
end
deleteme.each do |tagging|
#tag.taggings.delete(tagging)
good_tag.taggings << tagging
end
puts "-- converted '#{tag.name}' to '#{good_tag.name}' with #{deleteme.count} records"
puts "\n## #{i} tags processed\n\n" if (i % 50 == 0)
end
end
task :remove_uppercase_hashtags => :environment do
evil_tags = ActsAsTaggableOn::Tag.where("lower(name) != name")
evil_tags.each do |tag|
next if tag.taggings.count > 0 # non-ascii tags
puts "removing '#{tag.name}'..."
tag.destroy
end
end
end
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter