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