2013-06-06 2 views
-1

У меня есть этот метод, который сообщает об ошибке в строке 7. Он работает нормально, когда я ввожу каждую строку отдельно в консоли, но получаю ошибку, когда я вызываю все deleteUser метод:Ошибка метода при вызове метода, но не как одна строка

NoMethodError: undefined method `delete' for nil:NilClass

1 def self.deleteUser(user_id) 
2 @user = User.where(:id => user_id).first 
3 players = GameMember.where(:user_id => @user.id, :is_game_over => "FALSE") 
4 
5 if players.empty? 
6 stat = Stat.where(:winners_id => @user.id).first 
7 unless stat.nil? 
8 stat.delete 
9 end 

    .... 
+0

Можете ли вы показать свой код вызова? 'stat', похоже, не существует, вероятно, потому что ваш': where' в строке 6 не возвращает никаких записей. –

+0

Нам нужно увидеть код для чего. – Senjai

+0

@Senjai выглядит как ActiveRecord .. – Doon

ответ

3

Ваш unless нуждается в своей собственной end:

if ... 
    unless stat.nil? 
    stat.delete 
    end 
end 

Вы можете получить только опустить end при использовании x unless y формы:

if ... 
    stat.delete unless stat.nil? 
end 

(метод самого испытывая недостаток в end, но я предполагаю, что вы просто опущены, что часть из вашего кода).

+0

yep это сделал. спасибо –

Смежные вопросы