使用ActiveStorage::Filename#sanitized,如果空格没问题。
如果空格没问题,我建议保留,如果这是用户提供和/或用户可下载的文件,那么您可以使用ActiveStorage::Filename#sanitized适合这种情况的方法。
它删除了文件名中不允许使用的特殊字符,同时保留了用户通常用来很好地组织和描述其文件的所有好字符,例如空格和 & 符号 (&)。
ActiveStorage::Filename.new( "Prélèvements - Routine" ).sanitized
#=> "Prélèvements - Routine"
ActiveStorage::Filename.new( "Carnet de santé" ).sanitized
#=> "Carnet de santé"
ActiveStorage::Filename.new( "Foo:Bar / Baz.jpg" ).sanitized
#=> "Foo-Bar - Baz.jpg"
String#parameterize如果您想删除几乎所有内容,请使用。
如果您真的想删除所有内容,请尝试String#parameterize:
"Prélèvements - Routine".parameterize
#=> "prelevements-routine"
"Carnet de santé".parameterize
#=> "carnet-de-sante"
"Foo:Bar / Baz.jpg".parameterize
#=> "foo-bar-baz-jpg"