У меня возникли трудности с попыткой выяснить, что я делаю неправильно. Мой запрос ActiveRecord
возвращает nil
, который, как мне кажется, вызывает NoMethodError
.Ruby - NoMethodError (undefined method for nil: NilClass):
Вот что у меня есть:
@number_exclude_list = ["1234567890", "2223334545"]
@available_number = UserNumber.where.not(:user_num => @number_exclude_list)
Который возвращает пустой набор строк:
=> #<ActiveRecord::Relation []>
так, то у меня есть:
if (@available_number.empty?)
inform_user_empty
else
do_my_other_function
Но, я получаю:
`NoMethodError (undefined method 'inform_user_empty' for nil:NilClass)`
Я пробовал: @available_number.blank?
и `@available_number.nil?
И я все еще получаю ту же NoMethodError
. Любые идеи о том, что я делаю неправильно здесь?
Я считаю, что это неправильное место 'inform_user_empty' для исключения: потому что вы вызвали' self.inform_user_empty', это 'self'' nil'? –
Я не совсем понимаю ваш комментарий, но функция 'inform_user_empty' находится в' application_controller.rb'. – Dodinas
Да, но ваша ошибка говорит: 'undefined method 'inform_user_empty' для nil: NilClass', другими словами, это приводит к вызову' nil.inform_user_empty', но поскольку функция 'inform_user_empty' находится в' application_controller.rb'. Этого не может быть. замените 'inform_user_empty' на' self.inform_user_empty'. сначала вставьте 'p self' и повторите попытку –