每当我尝试访问该应用程序时,都会出现此错误。该错误与应用程序控制器有关。这是错误。 找不到所有带有'id':( 17,38)的Private :: Conversations(找到0个结果,但正在寻找2个结果)。
该错误在bash中的解释如下: ActiveRecord :: RecordNotFound(找不到所有带有'id':( 17,38)的Private :: Conversations(找到0个结果,但正在寻找2个)。):
app / controllers / application_controller.rb:28:在“ opened_conversations_windows”中 我尝试过更改find方法,但是似乎无法使用诸如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
我希望当未找到对话时,该应用程序应在用户登录时显示无对话窗口。
答案 0 :(得分:0)
find
用于在找不到给定ID的记录的情况下引发错误。
如果不想引发错误,则可以在发现单个记录时使用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