用新创建但未保存的记录替换现有记录

时间:2012-05-08 05:50:42

标签: ruby-on-rails activerecord

如果我有已保存在数据库中的记录A,那么我想用新创建的记录B替换它尚未保存。因此B可以保存在数据库中,但ID为A(并且A被替换)。这是否可以在Rails Active Record中使用?

P.S。这背后的原因是我需要通过某种条件合并对象,并且构造对象需要一些互联网提取/解析。因此,如果时间用于解析B,我希望防止再次为A解析它,但将其替换为B.

2 个答案:

答案 0 :(得分:2)

尝试这样的事情(没有测试此代码):

a = Model.find(params[:id])
b = Model.new(params)
a.update_attributes(b.attributes)

答案 1 :(得分:2)

您可以这样做:

a = A.find(1)
b = B.new

# Modify b

a.update_attributes(b.attributes.delete_if{ |k,v| %w(id created_at updated_at).include?(k) })