设计删除新注册,同时保留编辑注册



我使用devise_invitable只允许用户在被邀请时注册。

要删除用户注册,同时保留编辑或删除帐户的选项,请执行以下操作:

在我的用户模型中,我删除了:可注册

# app/models/user.rb
class User
...
    devise :database_authenticatable, :recoverable, :rememberable
...
end

在我的路由文件中:

# config/routes.rb
  devise_for :users
  as :user do
    get 'users/edit' => 'devise/registrations#edit', :as => 'edit_user_registration'
    put 'users' => 'devise/registrations#update', :as => 'user_registration'
  end

尝试编辑帐户时,出现此错误:

No route matches [PUT] "/users/edit.user"

尝试删除帐户时,出现此错误:

No route matches [DELETE] "/users/edit.user"

如何删除注册路线和链接,同时保留编辑注册的功能?

仅从模型中删除注册是不够的。

在您的

路由中添加

resources :users, only: [:edit,:update]

这将为您提供 2 条路线

 edit_user    GET      /users/:id/edit(.:format)       users#edit
   user         PUT      /users/:id(.:format)            users#update

现在在用户控制器中添加以下内容,如果您使用的是 rails4,那么您还需要允许参数

def edit
      @user = current_user
end
def update
     @user = current_user
     if @user.update_attributes(user_params)
       redirect_to @user
     else
        render :edit
     end
end
def user_params
    params.require(:user).permit(:username,:name,:email)   # add all params which u need to save and that must present in user params passed from forms
end

要使表单在应用程序/视图/用户/中添加 edit.html.erb

<%= form_for(@user) do |f| %>
   <%= f.label :username %>
   <%= f.text_field :username %>
   <%= f.label :name %>
   <%= f.text_field :name %>
   # add all other fields
   <%= f.submit "Update" %>
<% end %>

最新更新