Como baixar a imagem para a máquina local usando trilhos

Hoje eu estava pesquisando sobre esse assunto, e encontrei muitos resultados que gostaria de compartilhar com vocês.

Baixe a imagem para a pasta de download

Aqui você pode usar o downloadatributo HTML na sua tag de link ( atag), então, se você usar a gema de libélula, você escreverá algo semelhante a

<% image_url = "#{request.protocol}#{request.host_with_port}#{@user.image.url}" %>
<a href="
<%= image_url %>" download="<%= @user.image_name %>" class="btn btn-block btn-primary">Download Image</a>

Aqui você pode encontrar mais informações sobre o downloadatributo

Baixe a imagem imediatamente

Se você quiser fazer o download da imagem quando a página for aberta ou se quiser contar quantas vezes a imagem foi baixada, você pode anexar este código à sua ação

image_url = "#{request.protocol}#{request.host_with_port}#{@user.image.url}"
send_file
(
image_url
,
filename
: @user.image_name,
type
: "image/png"
)

Claro que você pode alterar o tipo de imagem passando a opção de formato para o método de polegar

@user.image.thumb("", 'format' => 'png')

send_file método não funciona apenas com imagens, ele funciona com todos os tipos de arquivo, você apenas tem que alterar a opção de tipo.