Я сею несколько csvs для разных таблиц, которые имеют много похожих столбцов.Например, таблицы преподавателей и учащихся имеют аналогичные столбцы email, name и т. Д. Поэтому я хочу сократить мой начальный файл, поместив все общие элементы в переменную, так что:
puts "Seeding teachers.."
File.open("teachers.csv", "r") do |f|
f.each_with_index do |line, index|
email, name, teacher_code = line.chomp.split (",")
Teacher.create(email: email, name: name, teacher_code: teacher_code)
end
end
puts "Seeding students.."
File.open("students.csv", "r") do |f|
f.each_with_index do |line, index|
email, name, subject = line.chomp.split (",")
Student.create(email: email, name: name, subject: subject)
end
end
становится:
def common_data
[email, mame]
end
def common_params
["email: email", "name: name"] # not sure
end
puts "Seeding teachers.."
File.open("teachers.csv", "r") do |f|
f.each_with_index do |line, index|
common_data, teacher_code = line.chomp.split (",")
Teacher.create(common_params, teacher_code: teacher_code)
end
end
puts "Seeding students.."
File.open("students.csv", "r") do |f|
f.each_with_index do |line, index|
common_data, subject = line.chomp.split (",")
Student.create(common_params, subject: subject)
end
end
Я получаю сообщение об ошибке
NameError: undefined local variable or method `email' for main:Object