Вы перебираете символы в адресе электронной почты, фактически не используя их, поэтому это не то, что вам нужно.
def ascii_email
self.email.bytes.collect do |e|
"&\##{e};"
end.join('')
end
Есть важное, но тонкое отличие между итератором, который просто идетчерез элементы и тот, который возвращает преобразованные результаты.В вашем фрагменте также отсутствовало то, что превратило преобразованный массив обратно в строку.