Rails: I installed ActiveAdmin and my devise link stopped working

I have devise installed. And I have a link: <%= link_to "Sign up", new_user_registration_path %>

When I installed ActiveAdmin (for existing model User), this link stopped working:

undefined local variable or method `new_user_registration_path'

I used git diff for routes.rb and here it is (added lines are black):

ActiveAdmin.routes(self) devise_for :users, ActiveAdmin::Devise.config

Also <%= link_to "Sign out", destroy_user_session_path, :method => :delete %> now leads to /admin/logout

How can I solve this problem?

rake routes:

     admin_dashboard            /admin(.:format)                       {:action=>"index", :controller=>"admin/dashboard"}
         admin_codes GET        /admin/codes(.:format)                 {:action=>"index", :controller=>"admin/codes"}
                     POST       /admin/codes(.:format)                 {:action=>"create", :controller=>"admin/codes"}
      new_admin_code GET        /admin/codes/new(.:format)             {:action=>"new", :controller=>"admin/codes"}
     edit_admin_code GET        /admin/codes/:id/edit(.:format)        {:action=>"edit", :controller=>"admin/codes"}
          admin_code GET        /admin/codes/:id(.:format)             {:action=>"show", :controller=>"admin/codes"}
                     PUT        /admin/codes/:id(.:format)             {:action=>"update", :controller=>"admin/codes"}
                     DELETE     /admin/codes/:id(.:format)             {:action=>"destroy", :controller=>"admin/codes"}
         admin_users GET        /admin/users(.:format)                 {:action=>"index", :controller=>"admin/users"}
                     POST       /admin/users(.:format)                 {:action=>"create", :controller=>"admin/users"}
      new_admin_user GET        /admin/users/new(.:format)             {:action=>"new", :controller=>"admin/users"}
     edit_admin_user GET        /admin/users/:id/edit(.:format)        {:action=>"edit", :controller=>"admin/users"}
          admin_user GET        /admin/users/:id(.:format)             {:action=>"show", :controller=>"admin/users"}
                     PUT        /admin/users/:id(.:format)             {:action=>"update", :controller=>"admin/users"}
                     DELETE     /admin/users/:id(.:format)             {:action=>"destroy", :controller=>"admin/users"}
      admin_comments GET        /admin/comments(.:format)              {:action=>"index", :controller=>"admin/comments"}
                     POST       /admin/comments(.:format)              {:action=>"create", :controller=>"admin/comments"}
   new_admin_comment GET        /admin/comments/new(.:format)          {:action=>"new", :controller=>"admin/comments"}
  edit_admin_comment GET        /admin/comments/:id/edit(.:format)     {:action=>"edit", :controller=>"admin/comments"}
       admin_comment GET        /admin/comments/:id(.:format)          {:action=>"show", :controller=>"admin/comments"}
                     PUT        /admin/comments/:id(.:format)          {:action=>"update", :controller=>"admin/comments"}
                     DELETE     /admin/comments/:id(.:format)          {:action=>"destroy", :controller=>"admin/comments"}
    new_user_session GET        /admin/login(.:format)                 {:action=>"new", :controller=>"active_admin/devise/sessions"}
        user_session POST       /admin/login(.:format)                 {:action=>"create", :controller=>"active_admin/devise/sessions"}
destroy_user_session DELETE|GET /admin/logout(.:format)                {:action=>"destroy", :controller=>"active_admin/devise/sessions"}
       user_password POST       /admin/password(.:format)              {:action=>"create", :controller=>"active_admin/devise/passwords"}
   new_user_password GET        /admin/password/new(.:format)          {:action=>"new", :controller=>"active_admin/devise/passwords"}
  edit_user_password GET        /admin/password/edit(.:format)         {:action=>"edit", :controller=>"active_admin/devise/passwords"}
                     PUT        /admin/password(.:format)              {:action=>"update", :controller=>"active_admin/devise/passwords"}
                root            /                                      {:controller=>"codes", :action=>"list"}
                                /:controller(/:action(/:id(.:format)))

I checked out old revision, and routes were:

        new_user_session GET    /users/sign_in(.:format)               {:action=>"new", :controller=>"devise/sessions"}
            user_session POST   /users/sign_in(.:format)               {:action=>"create", :controller=>"devise/sessions"}
    destroy_user_session DELETE /users/sign_out(.:format)              {:action=>"destroy", :controller=>"devise/sessions"}
           user_password POST   /users/password(.:format)              {:action=>"create", :controller=>"devise/passwords"}
       new_user_password GET    /users/password/new(.:format)          {:action=>"new", :controller=>"devise/passwords"}
      edit_user_password GET    /users/password/edit(.:format)         {:action=>"edit", :controller=>"devise/passwords"}
                         PUT    /users/password(.:format)              {:action=>"update", :controller=>"devise/passwords"}
cancel_user_registration GET    /users/cancel(.:format)                {:action=>"cancel", :controller=>"devise/registrations"}
       user_registration POST   /users(.:format)                       {:action=>"create", :controller=>"devise/registrations"}
   new_user_registration GET    /users/sign_up(.:format)               {:action=>"new", :controller=>"devise/registrations"}
  edit_user_registration GET    /users/edit(.:format)                  {:action=>"edit", :controller=>"devise/registrations"}
                         PUT    /users(.:format)                       {:action=>"update", :controller=>"devise/registrations"}
                         DELETE /users(.:format)                       {:action=>"destroy", :controller=>"devise/registrations"}

Answers


It seems that you are using the same model for both normal users and admin users. ActiveAdmin requires a separate model for admins. Try reverting the changes made by the generator and then run this:

rails generate active_admin:resource AdminUser
rake db:migrate

This will create an AdminUser model that will have absolutely no link with your site's users.


One thing you might be missing is to declare your User model as 'registerable' to get the signup routes generated by Devise.

You should have something like this:

class User < ActiveRecord::Base
  # Include devise modules
  devise :database_authenticatable, :registerable, ...

I ran into this problem once and this is what solved it.


in routes.rb, specify devise_for :users This will restore devise users routes


Need Your Help

Monogame - draw automatically generated content from curves

c# pixel collision monogame

I am writing a little Monogame and I am wondering how I can draw a curve that will be generated by some formula, then I want to fill everything bellow that curve with some color and I want to gener...

Opening non-default browser with lite-server in angular2 quick start guide

node.js angular launching

Having followed the TypeScript version of the Angular 2 Quick Start guide, I was wondering if it is possible, and if so how to configure the lite-server to launch a browser other than the default.