ActiveRecord метод 'destroy' возвращает логическое значение в Ruby on Rails? - PullRequest
18 голосов
/ 07 февраля 2011

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

@user.destroy

Мне нужно это для обработки дел о успехе и сбое примерно так:

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

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

Ответы [ 2 ]

28 голосов
/ 07 февраля 2011

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

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

15 голосов
/ 07 февраля 2011

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

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