質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
86.02%
Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

rake taskでcsvをダウンロードするためsend_fileを使ったらundefined method `send_file' for main:Objectとなる

NN77
NN77

総合スコア59

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

1回答

0グッド

1クリップ

215閲覧

投稿2023/02/03 22:15

編集2023/02/03 22:17

実現したいこと

rake taskで特定のテーブルのデータを全てcsvでダウンロードする処理をかけたいと思っています。

前提

参考にしたソース
https://blog.to-ko-s.com/output-csv/

発生している問題・エラーメッセージ

以下のコードを書いてみましたが、NoMethodError: undefined method `send_file' for main:Objectとなってしまいcsvをダウンロードできません。こちらの原因と対処法の見当がつく方がいらっしゃればアドバイス願えないでしょうか。

require 'csv' namespace :export_csv task export_csv: :environment do csv_data = CSV.generate do |csv| csv << Table.column_names csv << Table.all.map do |t| t end end send_file(csv_data, filename: "table.csv") end end

試したこと

send_dataとしても同じ結果でした。
require 'open-uri'を追加したら良いと言う情報を見つけたのでそちらも追記してみましたが同じ結果でした。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

回答1

0

ベストアンサー

send_data send_file はユーザーにファイルダウンロードさせるコントローラー用メソッドであって、ユーザー不在のrakeには使いようがないんじゃないでしょうか

rakeなら必要なのはファイル書き出しではありませんか

投稿2023/02/04 01:19

編集2023/02/04 01:20
yuma.inaura

総合スコア1427

下記のような回答は推奨されていません。

  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

回答へのコメント

NN77

2023/02/04 06:12

yumaさん今回もありがとうございます。 なるほど、そういうことだったのですね...! 以下で書き出しは成功しました!ありがとうございます。 ファイルは生成でき、ただ中身がなぜか #<Table:0x000000001c9eebe0>,#<Table:0x000000001c9ec908>,#<Table:0x000000001c9ec7c8>と意図しない状態になってしまっていると言う問題はあるのですが、ご質問した件は解決いたしました! CSV.open('table.csv','w') do |csv| csv << Table.column_names csv << Table.all.map do |t| nd end end

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
86.02%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。