Bom dia,
Estou com uma dificuldade para exibir uma mensagem de erro.
O problema é o que é mostrado na mensagem de erro. No model é feito uma validação se um arquivo anexado é suspeito, no caso, se termina com .exe, .com, .bat.. antes de fazer o upload.
Model:
validate :suspitious_attachment
private
def suspitious_attachment
#testes
if ends_with? '.bat', '.com', '.exe', '.src', '.cmd'
errors.add(:base, I18n.t('errors.messages.suspitious_attachment', :value => attachment.path[-4..-1]))
errors.add('', I18n.t('errors.messages.suspitious_attachment', :value => attachment.path[-4..-1]))
errors.add_to_base(I18n.t('errors.messages.suspitious_attachment', :value => attachment.path[-4..-1]))
errors.add(:attachment_file_name, I18n.t('errors.messages.suspitious_attachment', :value => attachment.path[-4..-1]))
errors.add(:name, I18n.t('errors.messages.suspitious_attachment', :value => attachment.path[-4..-1]))
end
end
Ao tentar fazer o upload de um arquivo terminado .com, por exemplo, aparecem as seguintes mensagens:
- Attachments base não é permitido upload de .com
- Anexos não é permitido upload de .com
- Attachments attachment file name não é permitido upload de .com
- Attachments name não é permitido upload de .com
O resultado esperado seria apenas: não é permitido upload de .com, mas em todas as tentativas variando a sintaxe apareceu pelo menos uma palavra antes.
Pelo que eu encontrei nos foruns e em um dos guias do rails:
A solução correta apresentada teria o seguinte formato: errors.add(:base, "Mensagem")
Nesse caso, só deveria exibir o conteúdo da mensagem, o que não está ocorrendo.
Chequei a versão suportada do rails pela aplicação: rails (4.0.0, 3.2.13, 3.2.6, 3.0.10), o errors.add deveria funcionar uma vez que serve para as versões acima de 3.0.
Alguem já teve algum problema similar ou pode me ajudar?
Obgda