Rails5: Как установить переменную для начальных параметров - PullRequest
0 голосов
/ 06 июня 2018

Я сею несколько 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

1 Ответ

0 голосов
/ 06 июня 2018

Ошибка выдается в common_data, да?Потому что здесь:

[email, mame]

(предполагается, что "mame" должно быть "name") ruby ​​ожидает, что email будет переменной или методом.Но не так ли?

Возможно, вы имели в виду:

['email', 'name']

или

[:email, :name]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...