Ruby on rails SessionControllerCreate中的Rails 4 NoMethodError为nil:NilClass创建未定义的方法'slice'
我的会话控制器Ruby on rails SessionControllerCreate中的Rails 4 NoMethodError为nil:NilClass创建未定义的方法'slice',ruby-on-rails,ruby,ruby-on-rails-4,Ruby On Rails,Ruby,Ruby On Rails 4,我的会话控制器 class SessionsController < ApplicationController def create user = User.from_omniauth(env["omniauth.auth"]) session[:user_id] = user.id redirect_to root_url end def destroy
class SessionsController < ApplicationController
def create
user = User.from_omniauth(env["omniauth.auth"])
session[:user_id] = user.id
redirect_to root_url
end
def destroy
session[:user_id] = nil
redirect_to root_url
end
end
我的用户.rb
class User < ActiveRecord::Base
def self.from_omniauth(auth)
where(auth.slice(:provider, :uid)).first_or_initialize.tap do |user|
user.provider = auth.provider
user.uid = auth.uid
user.name = auth.info.name
user.oauth_token = auth.credentials.token
user.oauth_expires_at = Time.at(auth.credentials.expires_at)
user.save!
end
end
结束
有人能告诉我我在S.O上搜索相同但无法找到相关解决方案的错误原因吗
结束我解决了这个问题
self.from_omniauth尝试创建新用户,因此我收到验证错误电子邮件不能为空或用户名不能为空,请评论您的验证并尝试
在验证中使用model on=>create,on=>update中的rails模型场景您希望您的env[omniauth.auth]变量保持什么样的状态…您在auth上调用slice,auth为nil。您的omniauth哈希值为零。我希望我的Facebook身份验证首先使用raise auth.inspect检查auth的值