【发布时间】:2014-08-19 15:58:47
【问题描述】:
在对 url 列进行更改后,我正在尝试更新一个表。目前,当我运行rake db:seed 时,数据被播种到数据库中,但是如果我对 csv 进行更改,在这种情况下更改为 url,我想更新表以反映该更改。目前,该表不会更新该值。
require 'csv'
datafile = Rails.root + 'db/data.csv'
CSV.foreach(datafile, headers: true) do |row|
Data.find_or_create_by({address: row[0]}) do |hr|
hr.address = row[0]
hr.city = row[1]
hr.state = row[2]
hr.zip = row[3]
hr.name = row[4]
hr.url = row[5]
end
end
CSV.foreach(datafile, headers: true) do |row|
Data.find_or_create_by({url: row[5]}) do |hr|
hr.url = row[5]
end
end
我尝试仅在 url (row[5]) 上执行 find_or_create_by,但这些更改没有得到反映。如何使此种子文件更新 postgreSQL 数据库中 CSV 中的任何更改或新条目?
【问题讨论】:
-
find_or_create不会更新已存在的记录。如果要更新现有记录,您讨厌显式调用save或update_attributes方法。
标签: sql ruby-on-rails ruby postgresql csv