Rails设计在登录时添加用户

时间:2014-05-24 09:48:42

标签: ruby-on-rails ruby devise

我使用Devise gem登录,注册和其他目的,它运行得很好。 当我登录应用程序并且我想从内部添加另一个用户时,问题就开始了。 我只看到了#34;你已经登录了。"没有别的。

所以我为这个动作创建了另一个控制器 - "经理",但没有任何改变。

控制器看起来像这样:

class ManagerController < ApplicationController
  skip_before_filter :require_no_authentication

  def new
    @user = User.new
  end

  def create
    @user = User.new(user_params)
    respond_to do |format|
      if @user.create
        format.html { redirect_to @user, notice: 'User was successfully created.' }
        format.json { render action: 'show', status: :created, location: @user }
      else
        format.html { render action: 'new' }
        format.json { render json: @user.errors, status: :unprocessable_entity }
      end
    end
  end
end

路线:

devise_for :users

resources :manager

我如何兼顾 - 从外部注册和从内部添加用户?

Rails 4,Devise 3.2.4

1 个答案:

答案 0 :(得分:4)

Devise :: RegistrationsController默认为require_no_authentication before filter

所以需要跳过它:

您需要覆盖注册控制器。在控制器启动时粘贴这一行

skip_before_filter :require_no_authentication
before_filter :authenticate_user!

因为我们想在用户进入后使用注册控制器。

基本上注册是图片中的第一,但是我们需要在里面使用它,所以不需要制作更多的控制器,只需覆盖设计方法和控制器。

----------------------------------------------- - - - - - - - 更新 - - - - - - - - - - - - - - - - - - -------------------------

在模型中添加此方法

型号/ User.rb     before_validation:generate_pwd

def generate_pwd
  your_generated_pwd = @Random password string
  self.password = your_generated_pwd
end

在Route.rb

resources :managers

在views / managers / new.html.erb

<%= form_for User.new do |f| %>
  <%= f.email_field :email %>
  <%= f.submit %>
<% end %>

并使用new_manager_path打开此表单。表格将使用registration_controller的创建方法。