如何在不更改数据库值的情况下修改对象?

时间:2018-01-12 01:21:44

标签: ruby-on-rails

我操纵DB的对象。我不想在DB中更改它们,我只想在函数范围内修改它们。特别是,我正在寻找用户最喜欢的产品,所以我这样做:

user.products

但我想删除所有收藏产品而不从数据库中删除它们。我这样做:

user.products.drop(user.products.count)

我需要暂时将它存储在user内。当我这样做时:

user.products = user.products.drop(user.products.count)

从数据库中删除对象。

任何人都可以帮助我吗?我测试了很多东西,没有任何作用。

1 个答案:

答案 0 :(得分:0)

您可以从原始user记录创建副本。它将保留直接在user上的属性,但副本将在没有任何子记录的情况下出现。

>> duplicate_user = user.dup
>> duplicate_user.products
#> #<ActiveRecord::Associations::CollectionProxy []>

只要您未对duplicate_user进行更改并期望将其更改为user,这应该对您有用。

如果您需要对最终保存回数据库的duplicate_user进行更改,则需要单独将更改应用回user