1

Rails Cast CSV Importに厳密に従って、ネストされた属性を使用してインポートを実装しようとしています。

インポートする文字列の例は次のとおりです。

id subject_list_name subject_codes

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

次のコードで、インポートしようとしています

  1. Subject List モデルのデータ (id および subject_list_name)
  2. サブジェクト モデルからのデータとの多対 1 の関係 - サブジェクト リストには多くのサブジェクト (サブジェクト コード) があります

現在、件名リストのデータをインポートできますが、関係のデータをインポートする際に問題が発生しました。(つまり、件名リスト名の変更を機能させることはできますが、件名コードの変更はできません)

次のコード セグメントは、私が行ったものです。

  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

この 2 つの関係を実装する方法についてアドバイスをいただければ幸いです。

4

0 に答える 0