Adding a back-end with Active Admin
Created by Rasmus Kjellberg
This guide assumes that you have already built a Rails Girls app by following the app development guide.
Active Admin is a Ruby on Rails plugin for generating administration style interfaces. It abstracts common business application patterns to make it simple for developers to implement beautiful and elegant interfaces with very little effort. You can read more about Active Admin here.
Adicionando a gem “Active Admin”
Abra seu Gemfile
e adicione as seguintes linhas
gem 'devise'
gem 'activeadmin', github: 'activeadmin'
gem 'inherited_resources', github: 'activeadmin/inherited_resources'
e rode
$ bundle install
para instalar as gems.
Depois de atualizar sem bundle, rode o instalador
$ rails generate active_admin:install
O instalador cria um inicializador utilizado para configurar os padrões utilizados pelo Active Admin e uma nova pasta em app/admin
para colocar todas as suas configrações de administrador.
Migre seu banco e inicie o servidor:
$ rake db:migrate
$ rails server
Criando sua primeira conta de administrador
Abra o Rails console e crie seu novo usuário utilizando o model AdminUser
:
$ rails console
irb(main):001:0> AdminUser.create(:email => 'admin@railsgirls.com', :password => 'password123', :password_confirmation => 'password123')
Você deverá ver alguma coisa como:
# (0.3ms) begin transaction
# SQL (0.4ms) INSERT INTO "admin_users" ...
# (0.9ms) commit transaction
Você pode sair da sessão do console com um simples comando exit
:
irb(main):002:0> exit
Acessando seu painel de administrador
Visite http://localhost:3000/admin e faça login utilizando suas credenciais.
Voila! Você está no seu novo painel de controle do Active Admin.
Adicione “Ideas” ao back-end
Para registrar seu model Ideia
com Active Admin, rode:
$ rails generate active_admin:resource Ideia
Atualize sua página de admin e você encontrará Ideias na navegação.
Você pode substituir “Ideia” por qualquer model que você quiser registrar com o Active Admin.
Setting up Strong Parameters
Para prevenir a exceção ActiveModel::ForbiddenAttributesError in Admin::IdeasController#update ao atualizar o model, você tem que utilizar o método permit_params para definir quais atributos podem ter sido alterados:
Abra seu arquivo app/admin/ideia.rb
e adicione :nome
, :descricao
e :imagem
ao permit_params
:
ActiveAdmin.register Ideia do
permit_params :nome, :descricao, :imagem
end
Remova “new”, “edit” e “destroy” para usuários.
Se você não quer que usuários não administradores atualize suas ideias, você pode facilmente consertar isso atualizando seu arquivo de todas para permitir apenas “index” e “show”. Adicione only: [:show, :index]
ao config/route.rb
:
resources :ideias, only: [:show, :index]
Não se esqueça de remover os links agora quebrados, do seu código front-end, como: <%= link_to 'Nova Ideia', new_ideia_path %>
, <%= link_to 'Editar', edit_idea_path(ideia) %>
, <%= link_to 'Excluir', ideia, method: :delete, data: { confirm: 'Você tem certeza?' } %>
Voila! Você pode agora gerenciar uas ideias do seu novo painel de administrador!
E agora?
- Adicione outro recurso ao admin como Blog e Comentarios