Ich habe zwei Modell-Klasse namens Student and Parent. Ich versuche, eine CSV-Datei hochzuladen, die es mir erlaubt, Parent-Attribute zu verwenden: Name, E-Mail usw. in die Student-Modellklasse oder ihre CSV-Datei. Wenn ich meinen Code ausführe, erhalte ich die Fehlermeldung unbekanntes Attribut 'Name' für Student. Ich verstehe, warum ich diese Fehlermeldung erhalte, weil der Attributname nicht in den Student-Attributen ist, sondern nur in der Eltern-Klasse. Ich benötige Anweisungen zum korrekten Hinzufügen von Elternattributen zu meiner Student-Modellklasse. Ich kann die Parent-Attribute mit den Student-Attributen in die gleiche CSV-Datei exportieren, aber wenn ich diese CSV-Datei importiere, erhalte ich die Fehlermeldung, die ich bereits erwähnt habe. Jede Hilfe wäre willkommen.unbekannt Attribut 'Name' für Student für Rubin auf Schienen
Student.rb Model-Klasse:
class Student < ActiveRecord::Base
belongs_to :parent
delegate :email,:name,:phone_number,to: :parent, allow_nil: true
def self.to_csv
attributes = %w{parent_id name first_name last_name age workshop interest registration_date email }
CSV.generate(headers: true) do |csv|
csv << attributes
all.each do |script|
csv << attributes.map{ |attr| script.send(attr) }
end
end
end
def self.import(file)
spreadsheet = open_spreadsheet(file)
header=spreadsheet.row(1)
(2..spreadsheet.last_row).each do |i|
row = Hash[[header,spreadsheet.row(i)].transpose]
#CSV.foreach(file.path, headers: true) do |row|
student = find_by_id(row["id"])|| new
student.attributes = row.to_hash.slice(*row.to_hash.keys)
student.save!
end
end
def self.open_spreadsheet(file)
case File.extname(file.original_filename)
when ".csv" then Roo::CSV.new(file.path)
when ".xls" then Roo::CSV.new(file.path)
when ".xlsx" then Roo::CSV.new(file.path)
else raise "Unknown file type: #{file.original_filename}"
end
end
end
Ich habe die gleiche Sache gemacht, den Import/Export zu Excel mit Roo. Es sollte wirklich eine Bibliothek geben, mit der wir MyModel kategorisieren können; excel_importable; excel_exportable; Ende 'und dann hat sich alles darum gekümmert. Jeder hat Freizeit und möchte das machen? ;) – alexanderbird
@alexanderbird konnten Sie Ihre Datei korrekt importieren – user2803053
@ndn Ich bekomme die gleiche Fehlermeldung: unbekanntes Attribut 'Name' für Student. – user2803053