コード
Companyモデルにsample_csvという名前のカラムがある想定。
ダウンロードされるファイル名がsample.csvになるように設定している。
<%= link_to 'サンプルCSVをダウンロード', @company.sample_csv.url(query: { 'response-content-disposition' => "attachment; filename=sample.csv" }).to_s %>
このリンクをクリックするとブラウザにファイルがダウンロードされる。
リクエストした先のアクションでsend_dataを使う実装だとメモリを使ってサーバーに負荷をかけてしまうが、このやり方はRailsアプリケーションにリクエストを送らないのでサーバに負荷をかけないのがメリット。