我当前正在尝试在wines控制器中更新in_stock属性。 in_stock属性也在预订控制器中。
当用户进行预订时,我将wine.in_stock - @reservation.bottle
传递到reservation.in_stock
变量中。
现在,我需要使用新的wine.in_stock
变量来更新reservation.in_stock
变量。
我目前处于此级别。我应该使用wine.update(in_stock: @reservation.in_stock)
还是类似的东西?
答案 0 :(得分:0)
您有两个选择,它们略有不同。您可以先更新属性,然后再save
,也可以使用update
一次完成所有操作。
echo "<img src=\"img/$numero[$i].svg\" alt=\"$numero[$i]\" title=\"$numero[$i]\" width=\"140\" height=\"140\">\n";
这会将wine.in_stock = @reservation.in_stock
wine.save
设置在内存中,然后将所有更改保存到数据库中的对象。这样做的好处是您可能想对wine.in_stock
进行一堆更改,直到完成(或完全)后再保存。
wine
如果您可以一次进行所有更改,最好使用# Change `wine.in_stock` in memory only.
wine.in_stock = @reservation.in_stock
...some other code...
# Change `wine.appraisal` in memory only.
wine.appraisal = :good_enough_for_the_pope
...some other code...
# Change `wine.price` in memory only.
wine.price = 6000
...some other code...
# Save all changes to `wine` to the database.
wine.save
。
update
这将使用# Update and save `wine`.
wine.update(
in_stock: @reservation.in_stock,
appraisal: :good_enough_for_the_pope,
price: 6000
)
和wine.in_stock=
和wine.appraisal=
分配所有属性,并在单个事务中调用wine.price=
。