0
當試圖登錄到我的網站,用戶被重定向回到主頁,而不在已簽署的。(該按鈕簽到仍然存在)Omniauth + Rails的不更新數據庫,並簽約在
我數據庫正在爲這些用戶創建新條目,但不更新任何信息。 (除id,provider和uid以外的所有列都是空的)
我甚至不確定從哪裏開始尋找解決這個錯誤。在我向用戶模型中添加另一列之前,這是工作的。
請幫忙!
SessionsController
class SessionsController < ApplicationController
layout false
def new
end
def create
begin
@user = User.from_omniauth(request.env['omniauth.auth'])
session[:user_id] = @user.id
flash[:success] = "Welcome, #{@user.name}!"
rescue
flash[:warning] = "There was an error while trying to authenticate you..."
end
redirect_to root_path
end
def destroy
if current_user
session.delete(:user_id)
flash[:success] = 'See you!'
end
redirect_to root_path
end
end
UsersController
class UsersController < ApplicationController
def current_user
@current_user ||= User.find_by(id: session[:user_id])
end
helper_method :current_user
def show
end
def edit
@all_events = Event.all
@user_events = current_user.userevents.build
end
def update
params[:events][:id].each do |event|
if !event.empty?
current_user.userevents.build(:event_id => event)
end
end
eventlist = Event.all
usereventlist = Userevent.all
eventstring = ""
Userevent.dedupe
usereventlist.each do |ue|
if current_user.id == ue.user_id
eventlist.each do |ei|
if ei.id == ue.event_id
eventstring += ei.event + " "
end
end
end
end
current_user.events = eventstring
current_user.save!
redirect_to current_user
end
end
用戶模型(user.role是添加的線)
class User < ActiveRecord::Base
class << self
def from_omniauth(auth_hash)
user = find_or_create_by(uid: auth_hash['uid'], provider: auth_hash['provider'])
user.name = auth_hash['info']['name']
user.location = auth_hash['info']['location']
user.image_url = auth_hash['info']['image']
user.url = auth_hash['info']['urls']['user.provide.capitalize']
user.email = auth_hash['info']['email']
user.events = nil
user.school = nil
user.role = nil
user.save!
user
end
end
has_many :userevents
end
遷移#_create_users.rb
class CreateUsers < ActiveRecord::Migration
def change
create_table :users do |t|
t.string :provider, null: false
t.string :uid, null: false
t.string :name
t.string :location
t.string :image_url
t.string :url
t.timestamps null: false
end
add_index :users, :provider
add_index :users, :uid
add_index :users, [:provider, :uid], unique: true
end
end
遷移#_add_roles_to_users.rb
class AddRolesToUsers < ActiveRecord::Migration
def change
add_column :users, :role, :string
end
end