Rails:如何检查find_or_initialize是否正在更新/创建/跳过?

时间:2012-06-01 14:39:00

标签: ruby-on-rails

我有从CSV更新数据库中的数据的方法。

csv_text = File.read("#{Rails.root}/db/seed/books.csv")
csv = CSV.parse(csv_text, :headers => :first_row)
csv.each { |row|
row = row.to_hash.with_indifferent_access.to_hash.symbolize_keys
row.delete_if { |key, value| value.nil? }
book = Book.find_or_initialize_by_name(row[:name])
book.update_attributes!(row)

如何检查是创建或更新记录还是没有任何反应?

1 个答案:

答案 0 :(得分:5)

检查book是否已更改:

book.changed?

检查book是否为新记录:

book.new_record?