2011-02-07 2 views
16

Я использую Ruby On Rails 3, и я хотел бы знать, какой тип возврата будет иметь следующий код:Метод «destroy» ActiveRecord возвращает логическое значение в Ruby on Rails?

@user.destroy 

Мне нужно, что для рассмотрения дел о успехе и разлома в каком-то, как это :

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

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

ответ

27

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

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

+4

Чтобы уточнить, давайте процитируем документы: «Если returnback before_destroy возвращает false, действие отменяется, а уничтожение возвращает false». (Http://edgeapi.rubyonrails.org/classes/ActiveRecord/Persistence.html#method-i- уничтожить). – amoebe

13

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

if @user.destroyed? 
    puts "True" 
else 
    puts "false" 
end 
Смежные вопросы