【问题标题】:How can compound csv file datas in ruby on rails oop如何在 ruby​​ on rails oop 中复合 csv 文件数据
【发布时间】:2021-08-21 21:00:00
【问题描述】:

我想在 ruby​​ on rails 中复合数据。

我有一个 department.csv 文件,它是这样的:

我也有 person.csv 文件,它是这样的:

现在,我有这门课:

filepath = "#{__dir__}/../csv/department.csv"
CSV.foreach(filepath, headers: true) do |row|
  department = Department.new(
    row["name"],
    row["midterm_score_ratio"],
    row["final_score_ratio"],
    row["minimum_passing_score"],
    row["university_name"],
    "students",
    "teachers"
  )
  department.print_department_name
end

这里,department.csv 文件中不存在学生和教师。我需要从 person.csv 文件中获取它。但是,部门也很重要。例如,如果这个人学习数学,那么这里的“学生”必须是数学学生。如何在 ruby​​ on rails 中使用 OOP 来做到这一点?

【问题讨论】:

    标签: ruby-on-rails ruby csv


    【解决方案1】:

    在解析deparment.csv之前,需要将学生和教师按部门分组,然后将其粘贴到部门初始化中。它看起来像:

    # export people from person.csv
    people = []
    filepath = "#{__dir__}/../csv/person.csv"
    CSV.foreach(filepath, headers: true) do |row|
      people << row.to_h
      student << person if person['field_of_study'] == 'student'
      teachers << person if person['field_of_study'] == 'teacher'
    end
    
    # group people by teachers/students and by department_name
    
    people_grouped_by_field_of_study = people.group_by{|person| person['field_of_study']}
    
    students = people_grouped_by_field_of_study['student'] # get only students
    students = students.group_by{|student| student['department_name']} # group students by department_name
    
    teachers = people_grouped_by_field_of_study['teacher'] # get only teachers
    teachers = teachers.group_by{|teacher| teacher['department_name']} # group teachers by department_name
    
    
    # push students and teachers based on department name
    filepath = "#{__dir__}/../csv/department.csv"
    CSV.foreach(filepath, headers: true) do |row|
      department = Department.new(
        row["name"],
        row["midterm_score_ratio"],
        row["final_score_ratio"],
        row["minimum_passing_score"],
        row["university_name"],
        students['name'], # students from department name
        teachers['name'] # teachers from department name
      )
      department.print_department_name
    end
    

    但我不确定学生和教师数组的格式。您需要将其转换为正确的格式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-05-23
      • 2016-12-15
      • 2011-11-29
      • 2018-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多