Rails 3 - 设计Gem - 如何通过CRUD界面管理用户

时间:2011-04-19 18:58:31

标签: ruby-on-rails ruby-on-rails-3 devise

Devise gem用于身份验证。我需要有一个用户索引和显示视图。发现这个如何在设计wiki,但无论如何玩,无法使其工作。

Devise - How To: Manage users through a CRUD interface

方法1:记得从Devise模型中移除:registerable模块(在我的例子中是用户模型)确保将map.resources:users放在map.devise_for:users route(devise_for:users and资源:Rails的用户3)。

方法2:devise_for:users,:path_prefix => 'd'资源:用户将设计逻辑与您的crud用户控件隔离开来

我的问题: 1.如果你在模型中删除可注册的,那么如何为用户设计工作? 2.如果你这样做了,你能提供样品吗?

提前致谢

2 个答案:

答案 0 :(得分:5)

以下对我有用。

<强> users_controller.rb

class UsersController < ApplicationController
...
  def create
    @user = User.new(params[:user])

    if params[:user][:password].blank?
      params[:user].delete(:password)
      params[:user].delete(:password_confirmation)
    end

    respond_to do |format|
      if @user.save
        format.html { redirect_to users_path, notice: 'User was successfully created.' }
      else
        format.html { render action: "new" }
      end
    end
  end
...
end

<强>的routes.rb

...
devise_for :users, :path_prefix => 'd'
resources :users
...

我希望这可以帮到你。

此致 贾科莫

答案 1 :(得分:3)

通过在用户视图文件夹中放置相应的new.html.erb,edit.html.erb,_form.html.erb等文件,添加/编辑/删除用户的工作方式与其他任何CRUD不同,如Devise的用户是另一种模特。我不会发布新的或编辑erbs(简单,脚手架可以显示其余部分),但我的用户_form.html.erb的一个示例......

<%= form_for(@user) do |f| %>
   <%= render :partial => 'shared/errors', :locals => { :content => @user } %>

   <div class="field">
      <%= f.label :email %><br />
      <%= f.text_field :email %>
   </div>   

   <div class="field">  
      <%= f.label :password %> <i>(leave blank if you don't want to change it)</i><br />
      <%= f.password_field :password %>
   </div>

   <div class="field">
      <%= f.label :password_confirmation %><br />
      <%= f.password_field :password_confirmation %>
   </div>

   <div class="field">
      <%= f.label :current_password %> <i>(we need your current password to confirm your changes)</i><br />
      <%= f.password_field :current_password %>
   </div>

   <div class="actions">
      <%= f.submit %>
   </div>

<% end %>

在我看来,我认为我离开了:可以注册,我仍然可以通过CRUD管理和更新用户。如果你把它放在外面,那么用户就无法自己注册,但你仍然可以自己添加和编辑用户(当然会用load_and_authorize_resource保护用户控制器以保持常规用户的使用。)