Вот процесс, если вы уже установили ActiveAdmin с настройками по умолчанию и хотите аутентифицировать пользователей с помощью поля User.is_admin
в существующей модели и удалить таблицу admin_user:
Откат миграций admin_user (если вы не использовали --skip-users
при установке Active Admin):
rake db:migrate:down VERSION=20141205110842 # create_active_admin_comments.rb
rake db:migrate:down VERSION=20141205110831 # add_devise_to_admin_users.rb
rake db:migrate:down VERSION=20141205110820 # devise_create_admin_users.rb
Затем удалите эти 3 файла.
В маршрутизации уберите строку devise_for :admin_users, ActiveAdmin::Devise.config
В application_controller.rb добавить:
def authenticate_admin!
if current_user && current_user.is_admin
# fine
else
redirect_to new_user_session_path
end
end
In active_admin.rb:
config.authentication_method = :authenticate_admin!
config.current_user_method = :current_user
config.logout_link_path = :destroy_user_session_path
config.allow_comments = false
config.logout_link_method = :get # couldn't get active_admin to sign out via :delete. So I configure devise to sign out via :get.
Чтобы настроить devise для выхода через :get
, добавьте devise.rb:
config.sign_out_via = :get
# And for every occurrence of destroy_user_session_path, remove the option method: delete.
Создать миграцию is_admin:
rails g migration add_is_admin_to_user is_admin:boolean
Отредактируйте миграцию следующим образом:
class AddIsAdminToUser < ActiveRecord::Migration
def change
add_column :users, :is_admin, :boolean, default: false
end
end
и мигрировать:
rake db:migrate
Если в рельсах 4, не забудьте добавить is_admin в allow_params. В app / admin / user.rb:
permit_params ....., :is_admin
Добавление прав администратора пользователям в консоли:
u = User.find(42); u.is_admin = true; u.save
Наслаждайтесь