我试图上载有一个属于两个不同的模型数据的csv文件:Project
和PurchaseOrder
。我正在使用模型之间的has_many, :through
关系。轨道4 CSV上传到多个模型
我遇到了上传问题。我已将两个控制器中的共享属性列入白名单,并且在两种型号中均包含accepts_nested_attributes
。
这里是我的代码在csv阅读。
def self.import(file)
CSV.foreach(file.path, headers: true) do |row|
project_hash = row.to_hash
project = Project.where(project_name: project_hash["project_number"]).first
if project.present?
project.first.update_attributes(project_hash)
else
Project.create! (project_hash)
end
purchase_order = PurchaseOrder.where(po_number: project_hash["po_number"]).first
if purchase_order.present?
PurchaseOrder.create!
end
我有两个问题/问题。
我无法读取
po_number
属性。我得到这个错误unknown attribute 'po_number' for Project
。我不知道如何创建的采购订单推入项目的哈希,以便更新嵌套的属性值。
预先感谢任何能够帮助的人!
****更新 通过这种方法,数据被保存到正确的表。但是,PurchaseOrder和Project之间的关联不会保存。有什么想法吗?
def self.import(file)
CSV.foreach(file.path, headers: true) do |row|
project_hash = row.to_hash
po_hash = {}
po = PurchaseOrder.new
project_hash.each { |k, v| po_hash[k] = project_hash.delete(k) if po.respond_to?(k) }
project = Project.where(project_name: project_hash["project_number"]).first
if project.present?
project.first.update_attributes(project_hash)
else
Project.create! (project_hash)
end
po = PurchaseOrder.where(po_number: po_hash["po_number"]).first
if po.present?
po.first.update_attributes(po_hash)
else
PurchaseOrder.create! (po_hash)
end
end
end
哪条线是通过错误?你能告诉我们吗? – ABMagil
我不再收到错误。我的新问题是,采购订单和项目之间的关联没有保存。 – pa71
然后你有一个新的问题。一个问题应该与一个问题相对应。 – ABMagil