それよりも
str.downcase!
str.gsub!(/\W/, "")
複数の破壊的なStringメソッドを連続して使用できるはずです。
str.downcase!.gsub!(/W/, "")
これが機能する場合もありますが、エラーが発生する場合もあります。
irb(main):001:0> str = "Foobar!"
"Foobar!"
irb(main):002:0> str.downcase!.gsub!(/\W/, "")
"foobar"
irb(main):003:0> str
"foobar"
irb(main):004:0> str.downcase!.gsub!(/\W/, "")
NoMethodError: undefined method `gsub!' for nil:NilClass
from (irb):4
from /usr/bin/irb:12:in `<main>'
どうしてこれなの?