Все не совсем так. Ваше регулярное выражение в целом валидно, но для обозначения начала и конца строки ( а не линии внутри строки) следует использовать не ^ и $, а \A и \z. Это настолько частая ошибка, идущая от незнания особенностей регулярок в руби, что в свое время было бурное обсуждение того, что это нужно изменить. В итоге видимо просто добавили в рельсу предупреждение в виде ошибки.
Чтобы понятно было, в чем именно ошибка:
"filename.png\n some other text" будет валидной, хотя не должна.