Я предполагаю, что ваша строка будет правильным текстом, но, возможно, она может иметь точку (.), Запятую (,), знак вопроса (?) И восклицательный знак (!). Согласно приведенному вами примеру, в котором вы пропустили полную остановку, я полагаю, вы удаляете эти специальные символы.
Так что здесь есть небольшая попытка достичь вашего сценария,
str = "This is my string. We need to truncate this string to certain length"
str.downcase.gsub(/[^0-9A-Za-z\s]/, '').gsub(/\s+/, '-')
# => "this-is-my-string-we-need-to-truncate-this-string-to-certain-length"