Как обновить связанные записи - PullRequest
1 голос
/ 11 октября 2019
class Bill < ApplicationRecord
  has_many :bill_items
  has_many :items, through :bill_items

  def add(item)
    BillItem.create(bill: self, item: item)
    update_total
  end

  def update_total
    total = 0
    bill_items.each do |item|
      total += item.price
    end
    self.update(total: total)
  end
end

class BillItem < ApplicationRecord
  belongs_to :bill
  belongs_to :item
end

class Item < ApplicationRecord
  has_many :bill_items
end

Я пытаюсь обновить все биллиты, прикрепленные к счету, выполнив следующие действия: bill.bill_items.update_all(price: new_price)

Кажется, что обновляется фактическая запись, но не связанная запись. то есть. Если я запускаю BillItem.pluck(:price), я получу новые цены, но если я запущу bill.bill_items.pluck(:price), я получу старые. Как мне обновить связанные записи?

1 Ответ

0 голосов
/ 11 октября 2019

Вы можете использовать reload метод. Перезагрузка записи из базы данных.

bill.bill_items.update_all(price: new_price)
bill.reload
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...