我操纵DB的对象。我不想在DB中更改它们,我只想在函数范围内修改它们。特别是,我正在寻找用户最喜欢的产品,所以我这样做:
user.products
但我想删除所有收藏产品而不从数据库中删除它们。我这样做:
user.products.drop(user.products.count)
我需要暂时将它存储在user
内。当我这样做时:
user.products = user.products.drop(user.products.count)
从数据库中删除对象。
任何人都可以帮助我吗?我测试了很多东西,没有任何作用。
答案 0 :(得分:0)
您可以从原始user
记录创建副本。它将保留直接在user
上的属性,但副本将在没有任何子记录的情况下出现。
>> duplicate_user = user.dup
>> duplicate_user.products
#> #<ActiveRecord::Associations::CollectionProxy []>
只要您未对duplicate_user
进行更改并期望将其更改为user
,这应该对您有用。
如果您需要对最终保存回数据库的duplicate_user
进行更改,则需要单独将更改应用回user
。