ActiveRecord :: RecordNotНайдено в StaticPagesController # home - PullRequest
0 голосов
/ 05 апреля 2019

Я получаю эту ошибку всякий раз, когда пытаюсь получить доступ к приложению. Ошибка о контроллере приложения. Это ошибка. Не удалось найти все частные :: разговоры с 'id': (17, 38) (найдено 0 результатов, но ищется 2).

Ошибка объясняется в bash следующим образом ActiveRecord :: RecordNotFound (Не удалось найти все частные :: разговоры с 'id': (17, 38) (найдено 0 результатов, но искали 2).):

app / controllers / application_controller.rb: 28: в "открывшемся_конверсии_окна" Я попытался изменить метод поиска, но кажется, что вещи не работают с такими методами, как find_by.

def opened_conversations_windows


        if logged_in?

            # opened conversations

            session[:private_conversations] ||= []

            @private_conversations_windows = Private::Conversation.includes(:recipient, :messages)
                                              .find(session[:private_conversations])



          else

            @private_conversations_windows = []


        end
end

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

1 Ответ

0 голосов
/ 05 апреля 2019

find предназначен для выдачи ошибки, если запись для данного идентификатора не найдена.

Если вы не хотите выдавать ошибку, вы можете использовать find_by, когда хотите найти одну запись, или вернуть nil, когда эта запись не существует.Или вы можете создать запрос с where, который всегда возвращает массив совпадающих записей в пустом массиве, если есть совпадающие записи.

Вы можете изменить свой метод на:

def opened_conversations_windows
  if logged_in? && session[:private_conversations]
    @private_conversations_windows = Private::Conversation
                                       .includes(:recipient, :messages)
                                       .where(id: session[:private_conversations])
  else
    @private_conversations_windows = []
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...