Метод "destroy" ActiveRecord возвращает логическое значение в Ruby on Rails?

Я использую Ruby on Rails 3, и я хотел бы знать, какой тип возврата будет иметь следующий код:

@user.destroy

Мне нужно, чтобы обрабатывать случаи успеха и ошибки в чем-то вроде этого:

if @user.destroy
  puts "True"
else
  puts "false"
end

Возможно ли это? Если да, то как?

Ответы

Ответ 1

Вы должны попробовать, что вы просите, прежде чем спрашивать. То, что у вас там, будет отлично работать.

Если разрушение работает, оно вернет объект (который будет передан как истинный в выражении if), а если нет, он вернет false или вызовет исключение, в зависимости от того, почему он не удался.

Ответ 2

Это возможно. Метод destroy возвращает объект, который был уничтожен; вы можете использовать destroyed? для этого объекта ActiveRecord, чтобы проверить, действительно ли объект уничтожен:

if @user.destroyed?
  puts "True"
else
  puts "false"
end