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

https://www.bogotobogo.com/RubyOnRails/RubyOnRails\_Devise\_Authentication\_Sending\_Confirmation\_Email.php

邮件确认production

https://www.bogotobogo.com/RubyOnRails/RubyOnRails\_Devise\_Authentication\_Sending\_Confirmation\_Email\_Heroku\_Deploy.php

results matching ""

    No results matching ""