将Authlogic中默认的用户激活字段active更改为activated_at字段。
在用户模型中,将active字段更改为activated_at:
# app/models/user.rb
class User < ApplicationRecord
acts_as_authentic do |c|
c.logged_in_timeout = 1.hour
# Change active field to activated_at field
c.transition_from_crypto_providers = [Authlogic::CryptoProviders::Sha512]
c.crypto_provider = Authlogic::CryptoProviders::SCrypt
c.transition_validation_class = User::TransitionValidation
c.validate_email_field = false
c.validate_login_field = false
c.validate_password_field = false
c.validate_password_confirmation_field = false
# Add activation logic to User model
c.transition_with = User::Transition
c.transition_class = User::StatefulTransition
c.activation_token_field = :activation_token
c.activation_token_sent_at_field = :activation_email_sent_at
c.activation_token_lifetime = :none
c.activation_mailer = UserMailer
c.activation_required = true
c.disable_perishable_token_maintenance = false
# Change active field to activated_at field
c.activation_field = :activated_at
end
...
end
需要同时更新数据库中的迁移文件:
# db/migrate/20191012051200_authlogic.rb
class Authlogic < ActiveRecord::Migration[5.2]
def change
add_column :users, :crypted_password, :string
add_column :users, :password_salt, :string
remove_column :users, :password, :string
remove_column :users, :password_confirmation, :string
remove_column :users, :persistence_token, :string
remove_column :users, :single_access_token, :string
remove_column :users, :perishable_token, :string
remove_column :users, :login_count, :integer
remove_column :users, :failed_login_count, :integer
remove_column :users, :last_request_at, :datetime
remove_column :users, :current_login_at, :datetime
remove_column :users, :last_login_at, :datetime
remove_column :users, :current_login_ip, :string
remove_column :users, :last_login_ip, :string
# Add activated_at field
add_column :users, :activated_at, :datetime
# Add activation_token and activation_email_sent_at fields
add_column :users, :activation_token, :string
add_column :users, :activation_email_sent_at, :datetime
end
end