Rails:输入后更新属性

时间:2018-10-27 16:13:51

标签: ruby-on-rails ruby-on-rails-5

我当前正在尝试在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)还是类似的东西?

1 个答案:

答案 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=