(Предположим, что содержание / тело комментария доступно через: контент)
@comments[0...5].map(&:content).join(' ').first(100)
Не сломается, если будет меньше 100 символов.
Но разве вы не можете получить только первые 5 комментариев из БД вместо того, чтобы получить все комментарии и сохранить только 5 из них?
Это было бы намного эффективнее.
Например:
@post.comments.select(:content).limit(5).map(&:content).join(' ').first(100)