Исправлена ​​ошибка.Как запустить обратные вызовы и сохранить, но не проверки? - PullRequest
0 голосов
/ 28 октября 2018

У меня есть некоторый код, который выглядит следующим образом:

def checkout(batch, checkout_user)
     ...
    if self.checkouts.build(removed_at: Time.now, checkout_location: batch.checkout_location, user: checkout_user, checkout_batch: batch)
      update_attribute(:library_status, 'Checked out')

      ...

Я больше не хочу, чтобы эта строка update_attribute(:library_status) была там, потому что я не хочу помечать статус как "извлеченный".Однако я хочу сохранить созданные извлечения (связь), потому что возникает ошибка, если объект batch не связан с объектом checkout.

В модели CheckoutBatch:

has_many :catalog_items, through: :checkouts

Приведенная выше строка является виновником.Код, который выглядит как batch.catalog_items, ничего не вернет, если только checkout не будет сохранен, потому что я получаю catalog_items через извлечения.

Так как мне сохранить обратные вызовы извлечения и возврата (как делает update_attributes?) но не обновить какие-либо атрибуты?Могу я просто позвонить self.checkouts.save?Это верно?

1 Ответ

0 голосов
/ 28 октября 2018

Да, вы можете просто позвонить self.checkouts.save. Это будет запускать проверки, сохранять проверки, если проверки пройдены, а затем запускать соответствующие обратные вызовы. Если вы хотите пропустить проверки, используйте метод сохранения: save!.

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