Rails: обновление атрибутов после ввода - PullRequest
0 голосов
/ 27 октября 2018

В настоящее время я пытаюсь обновить атрибут in_stock в контроллере wines.Атрибут 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 голосов
/ 27 октября 2018

У вас есть два варианта, и они немного отличаются.Вы можете обновить атрибуты, а затем save, или вы можете сделать это одновременно с помощью update.

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=, и вызывает wine.save все в одной транзакции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...