我在Rails中的规范有以下帮助:
include ApplicationHelper
def sign_in(user)
session[:access_token] = user.access_token
end
def signed_in?
current_user.present?
end
def current_user
User.find_by(access_token: session[:access_token])
end
但是我已经为nil提供了“未定义的方法`session”:NilClass“。我该如何解决?提前致谢。
答案 0 :(得分:1)
问题是您从中调用这些方法的上下文。会话通常存在于控制器中。如果您要从类中调用其中一个方法,那么Class将支持方法调用。现在有一个nil类调用会话方法。您需要处于会话的适当上下文中才能访问会话。
请注意这里的不同背景:
class PagesController < ApplicationController
#NOTE: within the context of a class in this case class PagesController
include ApplicationHelper
def some_method
sign_in(user)
end
end
如果将方法调用包装在类上下文中:
class Utility
include ApplicationHelper
def self.sign_in_a_user(user)
sign_in(user)
end
end
然后错误更有意义:
undefined local variable or method `session' for Utility:Class
反正! nil:NilClass
是您所处的背景。
见类似问题: