打开 has_secure_password 的文档,可以看到要使用它有两个先决条件,第一,要在 Gemfile 里面添加 Bcrypt,第二,就是要求 users 这张表里有 password_digest 这个字段
signup.html.erb
<div class="signup-form-container clearfix">
<div class="signup-form">
<%= form_for @user do |f| %>
<dl class="form">
<dt><%= f.label :name, "用户名" %></dt>
<dd><%= f.text_field :name %></dd>
</dl>
<dl class="form">
<dt><%= f.label :email %></dt>
<dd><%= f.text_field :email %></dd>
</dl>
<dl class="form">
<dt><%= f.label :password, "密码" %></dt>
<dd><%= f.password_field :password %></dd>
</dl>
<dl class="form">
<dt><%= f.label :password_confirmation, "请再输入一次" %></dt>
<dd><%= f.password_field :password_confirmation %></dd>
</dl>
<p><%= f.submit "注册", :class => "signup-button btn btn-primary" %></p>
<% end %>
</div>
</div>
users.css.scss
.signup-form-container, .login-form-container{
width: 670px;
margin: 50px auto;
border:1px solid #ddd;
padding: 2em;
.signup-form, .login-form {
width: 100%;
}
.signup-button, .login-button {
padding: 13px;
margin-top: 15px;
width: 100%;
}
}
model/user.rb
has_secure_password
user_controller.rb
def create
user = User.new(user_params)
user.save
redirect_to :root
end
private
def user_params
params.require(:user).permit!
end