如果我有记录 A 已保存在数据库中,那么我想用新创建的尚未保存的记录 B 替换它。所以 B 然后可以保存在数据库中,但使用来自 A 的 id (并且 A 被替换)。这在 Rails Active Record 中可行吗?
PS这背后的原因是我需要通过某种条件合并对象,并且构造一个对象需要一些互联网获取/解析。因此,如果使用时间来解析 BI,则希望防止再次为 A 解析它,而是将其替换为 B。
如果我有记录 A 已保存在数据库中,那么我想用新创建的尚未保存的记录 B 替换它。所以 B 然后可以保存在数据库中,但使用来自 A 的 id (并且 A 被替换)。这在 Rails Active Record 中可行吗?
PS这背后的原因是我需要通过某种条件合并对象,并且构造一个对象需要一些互联网获取/解析。因此,如果使用时间来解析 BI,则希望防止再次为 A 解析它,而是将其替换为 B。
尝试这样的事情(没有测试这段代码):
a = Model.find(params[:id])
b = Model.new(params)
a.update_attributes(b.attributes)
你可以这样做:
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) })