Ich habe diese railcasts zur Generierung der CSV-Datei meines Modells bezeichnet. Zum Generieren von CSV-Datei von Produkten DatenMethode gibt Objektreferenzen anstelle von Spaltendaten aus, wenn sie als Modul enthalten sind (Rails 4.2)
#products.rb
def self.to_csv(options = {})
CSV.generate(options) do |csv|
csv << column_names
all.each do |product|
csv << product.attributes.values_at(*column_names)
end
end
end
Und funktioniert wie ein Charme. Aber ich brauche die gleiche CSV-Erzeugungsfunktion über meine App haben und so habe ich ein Modul
lib/generate_csv.rb
module GenerateCSV
def self.to_csv(options = {})
CSV.generate(options) do |csv|
csv << column_names
all.each do |thismodel|
csv << thismodel.attributes.values_at(*column_names)
end
end
end
end
und ich eingeschlossen dieses Modul in
#products.rb
include GenerateCSV
aber das funktioniert nicht. In der heruntergeladenen Datei gibt es keine Daten außer Objektverweisen wie #<Product:0x007fdbe6a18578>
. Jede Hilfe sehr geschätzt
Danke, was denken u der Grund, es funktioniert nicht, wenn gerade als Modul enthalten? –
@Maverick Tan sagte, warum es nicht funktioniert, also hat er recht. Sorge ist nur ein "Schienen-Weg". Wenn Sie self.to_csv aus 'included'-Block verschieben, erhalten Sie die Objektreferenzen genau wie in Ihrer Frage. – retgoat
Sie haben Recht, @retgoat, danke! – Nathan