Je lance un script sur rails pour générer des slug pour les marques de profil. Ceci est mon script:Rails: slug contenant des underscores ne pas être générés
class String
def to_slug
#strip the string
ret = self.strip.downcase
#blow away apostrophes
ret.gsub! /['`]/,""
# @ --> at, and & --> and
ret.gsub! /\s*@\s*/, " at "
ret.gsub! /\s*&\s*/, " and "
#replace all non alphanumeric, underscore or periods with hyphen
ret.gsub! /\s*[^A-Za-z0-9\.\-]\s*/, '-'
#convert double underscores to single
ret.gsub! /_+/,"_"
#strip off leading/trailing underscore
ret.gsub! /\A[_\.]+|[_\.]+\z/,""
ret
end
end
Profile.all.each do |profile|
if !profile.brand_name.nil? && profile.brand_name != profile.first_name
profile.slug = profile.brand_name.to_slug
profile.save
end
end
Il fonctionne parfaitement pour les chaînes qui ne contiennent pas de soulignement. Mais il ne génère pas de slug pour les chaînes contenant un underscore.
par exemple. au nom de la marque est « Kalpana's_Creations », limaces de ce nom de marque est « nul », qui devrait être « kalpanas_creations »
Voici ce que je vois lorsque la console de rails exécute le script:
Profile Load (3.2ms) SELECT `profiles`.* FROM `profiles`
(0.2ms) BEGIN
Profile Exists (0.8ms) SELECT 1 AS one FROM `profiles` WHERE (`profiles`.`brand_name` = BINARY 'Kalpana\'s_Creations' AND `profiles`.`id` != 6) LIMIT 1
(0.2ms) ROLLBACK
I Je ne comprends pas ce qui ne va pas ici. Quelqu'un peut-il aider?
Vous avez raison. Il y avait un problème de validation. Résolu maintenant. Merci. – user2206724