# app/models/user.rb
class User < ActiveRecord::Base
has_secure_password
end
创建用户数据表:
rake db:migrate
实现注册功能
创建一个 Applicant(申请者) 控制器用来处理用户注册:
rails g controller applicants new create
applicants 控制器提供了两个方法:
new: 用来处理注册界面
create: 用来保存注册信息
上面命令创建的控制器方法,默认使用的都是 get 请求。保存注册信息的 create 方法使用的是 post 请求。所以需要到 config/routes.rb 中修改如下内容:
post 'applicants/create'
完成注册控制器功能:
# app/controllers/applicants_controller.rb
class ApplicantsController < ApplicationController
def new
@user = User.new
end
def create
@user = User.create(user_params)
if @user.save
redirect_to :sessions_new
else
render "new"
end
end
private
def user_params
params.require(:user).permit(:name, :password, :password_confirmation)
end
end
# app/controllers/sessions_controller.rb
class SessionsController < ApplicationController
def new
end
def create
user = User.find_by(name: user_params[:name]).try(:authenticate, user_params[:password])
if user
render plain: sprintf("welcome, %s!", user.name)
else
flash.now[:login_error] = "invalid username or password"
render "new"
end
end
private
def user_params
params.require(:session).permit(:name, :password)
end
end