Skip to content

[fix] csv出力されるようにoutput_csv_controllerを修正#1999

Merged
batcho0428 merged 5 commits intogm3/developfrom
fix/inaba/1998-fix-output-csv
Mar 20, 2026
Merged

[fix] csv出力されるようにoutput_csv_controllerを修正#1999
batcho0428 merged 5 commits intogm3/developfrom
fix/inaba/1998-fix-output-csv

Conversation

@batcho0428
Copy link
Copy Markdown
Collaborator

対応Issue

resolve #1998

概要

  • csv出力のエラーログからコードを修正

実装詳細

  • bomに関するメゾッドの記載を修正

画面スクリーンショット等

テスト項目

  • csv出力に問題がないか、内容に誤りがないか
  • エラーが出ないか

備考

Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

このPRの目的は、API側のCSV出力エラー(特にBOMの扱いに起因するもの)を解消し、年度指定時にも正しくCSVを出力できるようにすることです。

Changes:

  • 全てのCSV出力メソッドで、BOM(\uFEFF)の付与方法を変更し、CSV.generate(bom) から bom + CSV.generate 形式へ書き換え。
  • output_assign_rental_items_csv において、年度指定時のデータ取得を Group.where から AssignRentalItem.joins(:group).where(groups: { fes_year_id: ... }) に修正し、年度で正しく絞り込めるように変更。

end
bom = "\uFEFF"
csv_data = CSV.generate(bom) do |csv|
csv_data = bom + CSV.generate do |csv|
Copy link

Copilot AI Jan 26, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ここでも csv_data = bom + CSV.generate do |csv| ... end という書き方になっており、do...end ブロックが CSV.generate ではなく + 演算子側に結び付くため、CSV 生成ブロックが実行されない構文上の問題があります。CSV.generate にブロックを正しく渡せるように、{} ブロックに変えるか、括弧で囲むなどして式を書き換えてください。

Copilot uses AI. Check for mistakes.
end
bom = "\uFEFF"
csv_data = CSV.generate(bom) do |csv|
csv_data = bom + CSV.generate do |csv|
Copy link

Copilot AI Jan 26, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ここも bom + CSV.generate do |csv| という形になっており、do...end ブロックが CSV.generate ではなく + に結合されるため、CSV 生成用ブロックが実行されません。電力申請 CSV が出力されない原因になるので、CSV.generate にブロックが渡るように {} ブロックや括弧を用いた安全な書き方に変更してください。

Copilot uses AI. Check for mistakes.
end
bom = "\uFEFF"
csv_data = CSV.generate(bom) do |csv|
csv_data = bom + CSV.generate do |csv|
Copy link

Copilot AI Jan 26, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ここも他と同様に bom + CSV.generate do |csv| という構文になっており、do...end ブロックが + 側に結合されてしまうため、ステージ申請 CSV の生成処理が実行されません。CSV.generate へブロックを渡すよう、ブロックを {} に変更するか括弧を追加するなどして式を修正する必要があります。

Copilot uses AI. Check for mistakes.

bom = "\uFEFF"
csv_data = CSV.generate(bom) do |csv|
csv_data = bom + CSV.generate do |csv|
Copy link

Copilot AI Jan 26, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

この csv_data = bom + CSV.generate do |csv| も他と同様に、do...end ブロックが + に紐づいて CSV.generate がブロック無しで呼ばれてしまうため、連絡先リストの CSV が生成されません。CSV.generate にブロックを正しく渡すように、ブロックの種類や括弧の付け方を見直してください。

Copilot uses AI. Check for mistakes.
@cooking_process_orders = CookingProcessOrder.includes(:group, :food_product).all
bom = "\uFEFF"
csv_data = CSV.generate(bom) do |csv|
csv_data = bom + CSV.generate do |csv|
Copy link

Copilot AI Jan 26, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

csv_data = bom + CSV.generate do |csv| の形だと、Ruby の仕様上ブロックが + に紐づき、CSV.generate はブロック無しで実行されるため、調理工程申請 CSV が生成されません。この問題を避けるために、CSV.generate に直接ブロックを渡す形に書き換えてください({} ブロックの利用や括弧でのグルーピングなど)。

Copilot uses AI. Check for mistakes.
end
bom = "\uFEFF"
csv_data = CSV.generate(bom) do |csv|
csv_data = bom + CSV.generate do |csv|
Copy link

Copilot AI Jan 26, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

csv_data = bom + CSV.generate do |csv| という書き方だと、ブロックが CSV.generate ではなく + に結合されてしまい、購入品申請 CSV の行を積むブロックが動作しません。CSV.generate にブロックが渡るようにブロック構文を {} に変える、もしくは括弧を追加するなどして式を修正する必要があります。

Copilot uses AI. Check for mistakes.
end
bom = "\uFEFF"
csv_data = CSV.generate(bom) do |csv|
csv_data = bom + CSV.generate do |csv|
Copy link

Copilot AI Jan 26, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

csv_data = bom + CSV.generate do |csv| という書き方だと、Ruby のブロック結合規則により do...end+ に紐づき、CSV.generate がブロック無しで呼び出されてしまいます。このままだとレンタル物品 CSV が空になる/例外になる可能性があるため、CSV.generate 側にブロックが渡るようにブロック記法を {} に変えるか、括弧で式を明示的にグルーピングするよう修正してください。

Copilot uses AI. Check for mistakes.
end
bom = "\uFEFF"
csv_data = CSV.generate(bom) do |csv|
csv_data = bom + CSV.generate do |csv|
Copy link

Copilot AI Jan 26, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

この行も bom + CSV.generate do |csv| という記述のため、CSV 生成ブロックが CSV.generate に渡らず、+ 演算子側に結合される構文上の問題があります。従業員申請 CSV が正しく出力されるよう、CSV.generate にブロックが渡る形({} ブロックや括弧でのグルーピングなど)に修正してください。

Copilot uses AI. Check for mistakes.
@announcements = Announcement.all
bom = "\uFEFF"
csv_data = CSV.generate(bom) do |csv|
csv_data = bom + CSV.generate do |csv|
Copy link

Copilot AI Jan 26, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ここも csv_data = bom + CSV.generate do |csv| という構文により、do...end ブロックが CSV.generate ではなく外側の + に紐づいてしまい、会場アナウンス CSV の内容を出力するブロックが実行されません。CSV.generate 側にブロックが渡るように、{} ブロックを使うか括弧を付けるなどして式を修正してください。

Copilot uses AI. Check for mistakes.
end
bom = "\uFEFF"
csv_data = CSV.generate(bom) do |csv|
csv_data = bom + CSV.generate do |csv|
Copy link

Copilot AI Jan 26, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

この行の csv_data = bom + CSV.generate do |csv| でも、do...end ブロックが + に結合されるため、参加団体PR申請 CSV の出力ロジックが実行されません。CSV.generate にブロックが正しく渡るよう、ブロック構文({})や括弧を用いて式を修正する必要があります。

Copilot uses AI. Check for mistakes.
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 1 out of 1 changed files in this pull request and generated 1 comment.

filename_year = '全'
else
@assign_rental_items = Group.where(fes_year_id: params[:fes_year_id])
@assign_rental_items = AssignRentalItem.joins(:group).where(groups: { fes_year_id: params[:fes_year_id] })
Copy link

Copilot AI Feb 8, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

AssignRentalItem.joins(:group) は関連を eager load しないので、この後の assign_rental_item.group / rental_item / stocker_place 参照でレコード数分の追加クエリ(N+1)が発生します。CSV出力は件数が多くなりがちなので、includes(必要なら references)で必要な関連(例: :group, :rental_item, :stocker_place など)を事前ロードする形にすると安定します。

Copilot uses AI. Check for mistakes.
@hikahana
Copy link
Copy Markdown
Contributor

BOMってcsv形式のものをexcelで開こうとしたときに必要って認識なんだけどこのissueってそういう系?
そもそもでcsvが吐き出されないのが問題ならBOMとは別問題な気がするけどどうなんだろうっていう所感

@batcho0428
Copy link
Copy Markdown
Collaborator Author

@hikahana
これらしい。
原因は、gm3/develop 側の実装で CSV 生成ブロックが CSV.generate に渡っていなかったことです。

該当箇所は output_csv_controller.rb にあった次の形です。

bom + CSV.generate do |csv| ... end
Ruby では do...end の結び付きが弱いので、この書き方だとブロックが CSV.generate ではなく + 式側に解釈されます。
結果として CSV.generate は「ブロックなし」で実行され、行追加処理が走らず、実質中身のない出力(BOM だけなど)になっていました。

要するに、gm3/develop で出力されなかった主因は「ブロックの結び先ミス」です。
今回やったように CSV.generate を { |csv| ... } にするか、CSV.generate(...) を括弧で明示すれば解消します。

Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 1 out of 1 changed files in this pull request and generated 1 comment.


You can also share your feedback on Copilot code review. Take the survey.

Comment on lines +16 to +17
bom = "\uFEFF"
csv_data = CSV.generate(bom) do |csv|
csv_data = bom + CSV.generate do |csv|
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 1 out of 1 changed files in this pull request and generated no new comments.


You can also share your feedback on Copilot code review. Take the survey.

@batcho0428 batcho0428 requested a review from YosukeIida March 17, 2026 16:22
Copy link
Copy Markdown
Contributor

@hikahana hikahana left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

codex君が動作確認してくれたのでLGTM

@batcho0428 batcho0428 merged commit 7f72ebe into gm3/develop Mar 20, 2026
6 checks passed
@batcho0428 batcho0428 deleted the fix/inaba/1998-fix-output-csv branch March 20, 2026 17:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[api] CSV出力エラーの解決

3 participants