devise的安装
#gemfile
gem 'deviese'
#console
rails g devise:install
#install tips
1.config/environments/development.rb:
config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }
2.routes.rb
root to: "home#index"
3.app/views/layouts/application.html.erb
<p class="notice"><%= notice %></p>
<p class="alert"><%= alert %></p>
4. customer views
rails g devise:views
#结合model
rails g devise user
增加额外的功能
#改变默认的路由,routes中使用的devise_for方法生成了默认的路由,默认model是user的情况下
localhost:3000/users/sign_up #前面必须要有users
#去除前面的users并且改变sign_up这个值
devise_for :users, path: "", path_names:{ sign_in: 'login', sign_out: 'logout', sign_up: 'register' }
#生成登录和退出的页面以及功能
<% if current_user %>
<%= link_to "logout", destroy_user_session_path, method: :delete %>
<% else %>
<%= link_to "register", new_user_registration_path %>
<%= link_to "login", new_user_session_path %>
<% end -%>
#添加额外的name属性
1.migration中添加name属性
2.devise/registration中的edit和new页面分别添加name属性的值
3.在controller中让属性可以被通过,下面的方法也可以被放在controller/concern文件夹中
class ApplicationController < ActionController::Base
before_action :configure_permitted_parameters, if: :devise_controller?
protected
def configure_permitted_parameters
devise_parameter_sanitizer.permit(:sign_up, keys: [:name]) #sign_up是修改之前
devise_parameter_sanitizer.permit(:account_update, keys: [:name]) #account_update是修改之前的
end
end
#添加虚拟属性
class User < ApplicationRecord
validates :name, presence: true
def first_name
self.name.split.first #前面必须添加self
end
end
controller方法
#controller
before_action :authenticate_user!
helper方法
hello world
邮件确认的方法development
邮件确认production