Проверьте, была ли запись просто уничтожена в направляющих

5 ответов

Вы можете это сделать.

Record.exists?(record)

Однако это приведет к попаданию в базу данных, что на самом деле не нужно. Единственное другое известное мне решение - это выполнить обратный вызов, как упоминалось в IV.

attr_accessor :destroyed
after_destroy :mark_as_destroyed
def mark_as_destroyed
  self.destroyed = true
end

А затем проверить record.destroyed .

49
ответ дан 24 November 2019 в 10:45
поделиться

Это будет очень скоро. В последнем сообщении Riding Rails говорится следующее:

И, наконец, это не обязательно Связано с BugMash, но Хосе Валим - среди десятков других коммитов - добавлено модель. разрушен ?. Этот изящный метод вернет истину, только если экземпляр вы сейчас смотрите был успешно уничтожен.

Итак, поехали. Скоро в продаже!

10
ответ дан 24 November 2019 в 10:45
поделиться

destroy Если объект не возвращает ничего, кроме вызова freeze (насколько мне известно), я думаю, что заморожен? - лучший вариант. Другой вариант - спастись из ActiveRecord :: RecordNotFound , если вы сделали что-то вроде record.reload .

Я думаю, что тактика Майка, описанная выше, могла бы быть лучшей, или вы могли бы написать оболочку для этих случаев, упомянутых, если вы хотите начать «делать предположения».

Ура.

5
ответ дан 24 November 2019 в 10:45
поделиться

Не зная больше логики вашего приложения, я думаю, что оно зависло? ваш лучший выбор.

В противном случае вы, безусловно, можете добавить к своим моделям атрибут «уничтожен», который вы запускаете в обратных вызовах и который можно было бы проверить, если вы хотите более точное решение.

0
ответ дан 24 November 2019 в 10:45
поделиться

Просто сделайте это:

record.destroyed?

Подробности здесь ActiveRecord:: Persistence

189
ответ дан 24 November 2019 в 10:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: