モデルのすべてのフィールドをCSVファイルに書き出すことができましたが、オリジナルとhas_manyの関係を持つ別のモデルの属性を追加する必要があります。複数のモデルからCSVにデータをエクスポートする
それが正常に動作しますが、趣味は学生が多くの趣味を持っているとして、学生とhas_manyの関係を持つ別のテーブルですので、私が欲しいstudent.rb
def self.as_csv
attributes = %w{surname given_name admission_year admission_no hobbies }
CSV.generate do |csv|
csv << attributes
all.each do |item|
csv << item.attributes.values_at(*attributes)
end
end
respond_to do |format|
format.html
format.csv { send_data @students.as_csv, filename: "students-#{Date.today}.csv" }
end
ように私のコントローラファイルを探しますcsvでカンマ区切りのリストとして各生徒に趣味を表示します。私はこれを達成する方法について立ち往生しています。
ご協力いただければ幸いです。あなたは文字列として趣味を返し、属性名とtitle
を調整する必要があります
CSV_HEADER = %w[surname given_name admission_year admission_no hobbies]
def self.as_csv
CSV.generate do |csv|
csv << CSV_HEADER
all.each do |student|
csv << [
student.surname,
student.given_name,
student.admission_year,
student.admission_no,
student.hobbies.pluck(:title).join(', ')
]
end
end
end
:
使用しているRailsのバージョンは? '' as_csv'メソッドの 'all'とjoin(:hobbies)を使って動作するかどうか試しましたか? – Surya
私は試みましたが、それは動作していないようです。 – Anukrity
私は何かが欠けていますか? 'as_csv'は' class'メソッドか 'instance'メソッドですか? – rony36