Rails导入嵌套属性CSV

时间:2013-02-21 06:09:31

标签: ruby-on-rails ruby ruby-on-rails-3 csv ruby-on-rails-3.2

我正在尝试使用嵌套属性实现导入,紧跟以下内容: Rails Cast CSV Import

要导入的字符串示例如下:

id subject_list_name subject_codes

1   CE2A    [CPE205, CPE206, CPE301, CPE302, CPE303]

使用以下代码,我正在尝试导入

  1. 主题列表模型的数据(id和subject_list_name)
  2. 与主题模型中的数据的多对一关系 - 主题列表包含许多主题(主题代码)
  3. 现在,我可以导入主题列表的数据,但在导入关系数据时遇到问题。 (即我可以更改主题列表名称,但不能使用主题代码)

    以下代码段就是我所做的。

      def self.import(file)
        CSV.foreach(file.path, headers: true) do |row|
    
          #each row
          subject_list = find_by_id(row["id"]) || new
          subject_list.attributes = row.to_hash.slice(*accessible_attributes)
          subject_list.save!
    
          subject_codes = row["subject_codes"]
          subject_codes = subject_codes.delete('[]')
          subject_codes = subject_codes.split(', ')
    
          #each subject code
          subject_codes.each do |code|
            subject_list.subjects.where(subject_code:code)
             .first_or_create!(subject_code:code)
          end
    
        end
      end
    

    关于如何实现两者之间关系的任何建议都将不胜感激。

0 个答案:

没有答案