Так что есть
record.new_record?
Чтобы проверить, нет ли чего нового
Мне нужно проверить, не выходит ли что-нибудь.
record = some_magic
record.destroy
record.is_destroyed? # => true
Что-то такое. Я знаю, что уничтожение замораживает объект, так заморожен? вроде работает, но есть ли что-то специально для этой задачи?
ruby-on-rails
ruby
activerecord
Дэниел Хакстеп
источник
источник
object.destroyed?
DEPRECATION WARNING: You are passing an instance of ActiveRecord::Base to
существует?. Please pass the id of the object by calling
.id.
Record.exists?
спецификации контроллера, потому что я не могу перезагрузить уничтоженную запись, чтобы проверить, есть ли этоdestroyed?
. Но если у меня есть переменная экземпляра для проверкиassings
, я могу использоватьdestroyed?
.Просто сделай это:
Подробности здесь ActiveRecord :: Persistence
источник
Это произойдет очень скоро. В последнем посте Riding Rails говорится следующее:
Итак, поехали. Скоро!
источник
Пока рекорд. Уничтожен? работает нормально и возвращает true или false, вы также можете немного СУШИТЬ это и создать условие if в строке, которую вы вызываете destroy в своем контроллере.
record = Object.find(params[:id]) if record.destroy ... happy path else ... sad path end
Поймите, этот пост немного поздно в игре. Но если кто-то захочет обсудить это подробнее, я играю! Боковое примечание: у меня также была проверка after_destroy на моей модели, и пока она работала, отдельный метод для чего-то вроде этого кажется излишним;)
источник
destroy
объект не возвращает ничего, кроме вызоваfreeze
(насколько я знаю), поэтому я думаю, чтоfrozen?
это ваш лучший выбор. Другой вариант - спастись,ActiveRecord::RecordNotFound
если вы сделали что-то подобноеrecord.reload
.Я думаю, что тактика Майка, описанная выше, могла бы быть лучшей, или вы могли бы написать оболочку для этих упомянутых случаев, если вы хотите начать «делать предположения».
Ура.
источник
Не зная больше логики вашего приложения, я думаю, что это заморожено? ваш лучший выбор.
В противном случае вы, безусловно, могли бы добавить к своим моделям атрибут «уничтожено», который вы запускаете в обратных вызовах, и который можно было бы проверить, если вы хотите более точное решение.
источник