При попытке войти в свой веб-сайт, пользователь перенаправляется обратно на главную страницу, не будучи авторизированы. (Кнопка для входа в еще присутствует)OmniAuth + Rails не обновляет базу данных и подписание в
Мои база данных создает новые записи для этих пользователей, но не обновляет какую-либо информацию. (Все столбцы, кроме id, provider и uid, пустые)
Я даже не знаю, с чего начать искать эту ошибку. Это работало до того, как я добавил еще одну колонку в мою модель User.
Пожалуйста, помогите!
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