本文特点:
# 全局 安装 mailcatcher
$ gem install mailcatcher
# 开启 mail server
$ mailcatcher
Starting MailCatcher v0.8.1
==> smtp://127.0.0.1:1025
==> http://127.0.0.1:1080
*** MailCatcher runs as a daemon by default. Go to the web interface to quit.
# 查看进程状态
$ ps -aux | grep mailcatcher
# 在浏览器 查看 mail server 状态
在浏览器打开 http://127.0.0.1:1080
$ rails new r7-devise-mail-confirm
$ cd r7-devise-mail-confirm
# 使用vscode 打开
$ code .
修改 全局 模板 [app/views/layouts/application.html.erb],添加样式!
<link rel="stylesheet" href="https://cdn.simplecss.org/simple.min.css">
# 添加到 gem
$ bundle add devise
# 安装 devise
$ rails g devise:install
# 创建要使用的模型
$ rails g devise user
修改新生成的 migrate,去掉 Confirmable 块儿的注释
## Confirmable
t.string :confirmation_token
t.datetime :confirmed_at
t.datetime :confirmation_sent_at
t.string :unconfirmed_email # Only if using reconfirmable
修改新生成的 migrate,去掉 confirmation_token 索引 的注释
add_index :users, :confirmation_token, unique: true
执行 migrate
$ rails db:migrate
修改 user[app/models/user.rb] 模型,开启 devise 的 confirmable 功能
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :validatable,
:confirmable
修改 devise 初始化配置 [config/initializers/devise.rb],添加 对 turbo_stream 的支持
config.navigational_formats = ['*/*', :html, :turbo_stream]
修改 devise 初始化配置 [config/initializers/devise.rb],确认网站的发信邮箱
config.mailer_sender = '[email protected]'
修改模板 [app/views/layouts/application.html.erb],提供通知功能
<body>
<p><%= notice if notice %></p>
<p><%= alert if alert %></p>
<%= yield %>
</body>
修改开发环境的配置文件:config/environments/development.rb
# Show full error reports.
config.consider_all_requests_local = true
# devise turbo
config.action_mailer.default_url_options = {
host: 'localhost:3000',
}
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
address: '127.0.0.1',
port: 1025
}
#####
# 创建 articles#index
$ rails g controller articles index
# 修改路由
root "articles#index"
在 articles 的 index 中添加跳转到 devise 登录,注册,退出的链接
<% if current_user %>
<%= button_to 'Sign Out', destroy_user_session_path, method: :delete %>
<% else %>
<%= link_to "Sign Up", new_user_registration_path %>
<br>
<%= link_to "Login", new_user_session_path %>
<% end %>
测试就不多说了,这里给出一点提示:
如果没有确认过邮箱登录会出现上面图片中红框位置的提示信息!
而 mailcatcher 中可以点击注册的连接:
大家可以自己试试“忘记密码”等其它功能!