我的应用程序检查用户是否存在,如果不存在,则调用此行:
p = Player.create!(uid:id,nick:session [:current_user] [:nick],profile_complete:false)
由于某种原因导致错误:
undefined method `[]' for nil:NilClass
任何人都知道为什么?
答案 0 :(得分:1)
这是原因:session[:current_user][:nick]
,这意味着您此时在会话中没有session或current_user。
在调用.create!
if session[:current_user] && (nick = session[:current_user][:nick])
p = Player.create!(uid: id, nick: nick, profile_complete: false)
end
答案 1 :(得分:1)
您可以通过依次检查session[:current_user]
,然后session[:current_user][:nick]
是否存在来有条件地解决此异常:
if session[:current_user]
if session[:current_user][:nick]
p = Player.create!(uid: id, nick: session[:current_user][:nick], profile_complete: false)
end
end
答案 2 :(得分:0)
你也可以使用方法try
p = Player.create! uid: id, nick: session[:current_user].try(:[], :nick), profile_complete: false