현재 확인 메일을 확인 인증과 통합하려고합니다. 나는 명령의 유증 문서에서 다음 :Rails Devise confirmable error
https://github.com/plataformatec/devise/wiki/How-To:-Add-:confirmable-to-Users
나는 다음과 같은 오류 얻을 새 사용자 등록을 시도 :
NameError in Devise::RegistrationsController#create
undefined local variable or method `confirmed_at' for #<User:0x9b87b38>
User.rb
class User < ActiveRecord::Base
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable, :confirmable
end
을
레일 이동하기 add_confirmable_to_devise
class AddConfirmableToDevise < ActiveRecord::Migration
# Note: You can't use change, as User.update_all will fail in the down migration
def up
add_column :users, :confirmation_token, :string
add_column :users, :confirmed_at, :datetime
add_column :users, :confirmation_sent_at, :datetime
# add_column :users, :unconfirmed_email, :string # Only if using reconfirmable
add_index :users, :confirmation_token, unique: true
# User.reset_column_information # Need for some types of updates, but not for update_all.
# To avoid a short time window between running the migration and updating all existing
# users as confirmed, do the following
execute("UPDATE users SET confirmed_at = NOW()")
# All existing user accounts should be able to log in after this.
# Remind: Rails using SQLite as default. And SQLite has no such function :NOW.
# Use :date('now') instead of :NOW when using SQLite.
# => execute("UPDATE users SET confirmed_at = date('now')")
# Or => User.all.update_all confirmed_at: Time.now
end
def down
remove_columns :users, :confirmation_token, :confirmed_at, :confirmation_sent_at
# remove_columns :users, :unconfirmed_email # Only if using reconfirmable
end
end
confirmations_controller.rb
class ConfirmationsController < Devise::ConfirmationsController
private
def after_confirmation_path_for(resource_name, resource)
your_new_after_confirmation_path
end
end
routes.rb
Rails.application.routes.draw do
devise_for :users, controllers:{ confirmations: 'confirmations'}
resources :videos
get 'welcome/index'
get 'welcome/new'
root 'welcome#index'
end
나는 또한 내가 내 Gemfile에 'simple_token_authentication을 보석을 추가하고 실행해야 말하는 사람을 보았다
rails g migration add_authentication_token_to_users authentication_token:string:index
rake db:migrate
그러나 그 문제는 해결되지 않았습니다.
아이디어가 있으십니까? 감사!
'db/schema.rb' 파일에서'users '테이블에'confirmed_at' 컬럼이 있는지 확인하십시오. – chumakoff