RoR:是自动生成设计控制器还是我们自己编写?

时间:2013-06-06 12:58:24

标签: ruby-on-rails devise

我是ruby on rails的新手。我正在尝试使用devise gem进行身份验证。我正在阅读github中的教程。我使用rails generate devise:views创建了设计视图。但我没有找到任何控制器。我需要自己创建还是有任何命令为它生成控制器? Plz帮助

1 个答案:

答案 0 :(得分:3)

Devise已经在幕后为您创建了所需的控制器。这些控制器中很少有:RegistrationControllerSessionController

要自定义或覆盖任何控制器,请说RegistrationController;你可以做以下(我的一个应用程序的片段):

class RegistrationsController < Devise::RegistrationsController
  before_filter :admin_user, :only => [:destroy]

  def new
    super
  end

  def create
    if simple_captcha_valid? #verifying user registration by captcha
      super
    else
      build_resource
      clean_up_passwords(resource)
      flash.now[:alert] = "There was an error with the captcha code below. Please re-enter the code."      
      render :new
    end
  end

  def update
    # required for settings form to submit when password is left blank
    if params[:user][:password].blank?
      params[:user].delete("password")
      params[:user].delete("password_confirmation")
    end

    @user = User.find(current_user.id)
    if @user.update_attributes(params[:user])
      set_flash_message :notice, :updated
      # Sign in the user bypassing validation in case his password changed
      sign_in @user, :bypass => true
      redirect_to after_update_path_for(@user)
    else
      render "edit"
    end
  end

  def destroy
    @user = User.find(params[:id])
    @user.destroy
    redirect_to rooth_path
  end
end

您可以点击以下链接:https://github.com/plataformatec/devise#configuring-controllers