【发布时间】:2016-07-14 10:06:12
【问题描述】:
如果它不存在,我想创建一个新对象;或者,如果它已经存在于我的数据库中,则只需更新它的电子邮件。 我从 CSV 文件导入数据。
我尝试使用find_or_create_by 方法,但当它已经存在时,仍然复制数据库中的对象。它不只是更新它。
人.rb
class Person < ActiveRecord::Base
validates :email, uniqueness: true
require 'csv'
def self.import_data
filename = File.join Rails.root, '/vendor/people.csv'
CSV.foreach(filename, headers: true, col_sep: ',') do |row|
firstname, lastname, home_phone_number, mobile_phone_number, email, address = row
Person.find_or_create_by(firstname: row['firstname'], lastname: row['lastname'], home_phone_number: row['home_phone_number'], mobile_phone_number: row['mobile_phone_number'], email: row['email'], address: row['address'])
end
end
end
schema.rb
create_table "people", force: :cascade do |t|
t.string "email"
t.string "home_phone_number"
t.string "mobile_phone_number"
t.string "firstname"
t.string "lastname"
t.string "address"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
【问题讨论】:
标签: ruby-on-rails database ruby-on-rails-4