неопределенный метод `любой?' для нуля: NilClass

Это кажется простой проблемой, но я не могу на всю жизнь определить проблему.

Извлеченный источник: Show.Html.Erb

  <% if @jobs.any? %>

users_controller.rb

def show
    if current_user.role == 4
        @jobs = Job.where(jsender_id: current_user.id).order('created_at DESC')
    else
    end
end

Моя таблица Jobs пуста, что заставило меня сначала предположить, что экземпляр @jobs создавался как «Nil», поскольку в БД не было записей. Я создал несколько записей, но все равно получаю ошибку «Нет метода». Я что-то упустил здесь?

Job.rb на всякий случай:

class Job < ActiveRecord::Base
   belongs_to :jsender, :class_name => 'User'
   belongs_to :jrecipient, :class_name => 'User'
end

person Michael Arriaga    schedule 21.07.2014    source источник


Ответы (1)


Вы устанавливаете @jobs только тогда, когда current_user.role == 4, поэтому мы можем конкретно сказать, что current_user.role не является 4. Это невозможно. Если бы это было так, @jobs не могло бы быть nil, так как .where не может возвращать nil, он возвращает пустой массив, если нет совпадающих записей.

Мы не можем вам больше помочь, кроме как сообщить вам, каково значение current_user.role и почему оно не соответствует вашим ожиданиям.

person meagar    schedule 21.07.2014
comment
Большое спасибо за это, это решило мою проблему. Ранее я заполнил базу данных таблицей ролей и методом before_create :set_role в моем файле user.rb. Он устанавливал для всех моих ролей по умолчанию значение 1. Оплошность древнего коммита. Спасибо еще раз. - person Michael Arriaga; 21.07.2014