Nesta aula iremos aprender um pouco sobre os generators do Rails, utilizaremos o, scaffold, models e controllers.

Ruby on Rails - Generators

Nesta aula falaremos sobre:

Após a configuração inicial que vimos na aula anterior, vamos ver como criar os generators.

Quando criamos um Model, criamos um objeto que terá conexão direta com nossa base de dados.

Para gerar um model por exemplo:

  
    rails g model Carro nome:string marca:string
  
  

O rails g é uma abreviação para rails generate!

Isso gerará uma classe chamada Carro com os atributos nome e marca, e já terá todos atributos de CRUD padrão, atrás disso existe o Active Record, que é a classe que herdamos para obter os métodos relacionados ao banco de dados, ele é um O.R.M. ( Object Relational Mapping ), uma técnica de mapeamento objeto-relacional que cria uma camada de mapeamento entre nosso modelo de objetos. Ele cria todos nossos campos que precisamos diretamente no banco, sem que seja necessária nossa intervenção, ou escrever as queries brutas em SQL.

O nosso controller irá receber nossas requisições http e veremos como ele controla as rotas.

As migrations são responsáveis pela criação de tabelas, novos campos, alteração etc.

O scaffold gera todos nossos recursos base, como controllers, views, models etc.

Aula Prática


Lembre-se de entrar no diretório que criamos a primeira aplicação na aula passada.

generator de scaffold

Para isso faremos:

 rails g scaffold carro nome:string marca:string valor:float quantidade:integer
  

Note que na criação utilizamos o nome no singular isso é importante para aplicações em Rails, existe um padrão de nomenclaturas a ser respeitado.

Observe que agora nossa aplicação já tem uma série de abstraçẽos geradas conforme nós pedimos para o Rails gerar, isso incluí rotas de CRUD básicas designadas pelo padrão REST, então terá rotas Get, Put, Patch, Delete. Além disso tem rotas para recursos únicos como visualizar um item pelo ID ou para retornar todos, como a rota de /carros, usando o método HTTP GET, note que existem métodos separados dentro da classe carro para cada uma das ações, pode começar a ver no arquivo routes.rb, agora temos uma linha com:

  
    resources :carros
  
  

Ainda sobre essa geração de código, ele gerou a classe de controller que é responsável pelas configurações básicas no tratamento dos métodos que vimos nas rotas. Ele se encontra em: app/controllers/carros_controller.rb.

Já vimos as rotas, controladores e agora tem o modelo, ele é encontrado em: app/models/carro.rb.

Você notará que ele estará apenas herdando a classe ApplicationRecord, então ele não mostra explicitamente os atributos de banco, logo mais abordaremos esse assunto e conheceremos os métodos gerados.

O scaffold também gera uma migration, com a criação de uma tabela carros no banco de dados.

Caso queira conferir o arquivo de configuração do banco de dados vá até, app/config/database.yml.

Como vimos o Rails trabalha com convenção, seguindo as regras do Rails, ele fornecerá toda estrutura base da aplicação.

Para conferir todas rotas da sua aplicação use o comando:

    
      rake routes
    
    

Para criar os banco de dados use:

    
      rake db:create
    
    

Normalmente são criados dois bancos de dados, um nome_do_banco_test, e outro, nome_do_banco_development.

Para criar as tabelas no banco de dados use:

    
    rake db:migrate
    
    

Esse comando roda as migrações e já cria as tabelas como especificadas nos arquivos.

Caso olhe o seu banco de dados existe uma tabela a mais chamada schema_migrations, nela contém todos dados de migrações e versionamentos das mesmas.

O comando rake db:migrate, só irá executar caso haja alguma alteração nos arquivos de migrations, caso contrário não terá ação nenhuma.

Agora vamos executar nosso servidor Rails e ver como estamos até agora, faça:

    
    rails s
    
    

Assim conseguimos acessar em localhost:3000, na rota padrão você verá a tela de boas vindas do Rails, mas queremos ver o que fizemos então coloque na barra de endereços do navegador, localhost:3000/carros, já temos uma tela de visualização inicial e um botão para criar um novo, e quando houver dados, podemos editar, mostrar um único, ou excluir.

Obs.: Para customizar qualquer uma das páginas acesse app/views/carros, e abra o arquivo *.html.erb desejado. Demais configurações podem ser feitas app/assets também, lá você consegue utilizar algumas configurações globais.

Obs.: O Rails já vem com compilador Sass embutido, não sendo necessário ferramentas como Gulp.

generator de migrations

Neste geramos uma migração em que podemos definir os parâmetros:

    
    rails g migration carros_com_campo_ativo
    
    

Sempre consulte a documentação oficial do Rails em caso de dúvidas, vamos colocar uma linha em que adicionamos uma coluna a mais:

    
    add_column :carros, :ativo, :boolean
    
    

Para atualizar as tabelas no banco de dados use:

    
    rake db:migrate
    
    

Desta forma foi criado mais um campo na tabela, assim já podemos utilizá-lo.

No arquivo index.html.erb, dentro de app/views/carros vamos adicionar mais uma coluna na tabela HTML carro.ativo deve existir agora, então lá você pode adicionar uma TAG th com texto Ativo, e uma TAG carro.ativo , no corpo da tabela, assim ele irá renderizar o conteúdo.

Obs.: Lembre-se de parar e iniciar novamente o servidor Rails em caso de algum problema.

Nós apenas colocamos o campo "Ativo" na view, precisamos atualizar agora os demais lugares referentes, como no formulário de criação de registro para que tudo funcione corretamente, nesta aula não veremos isso, estamos focados em entender os generators, mas sinta-se à vontade para testar.

Vamos ver agora a criação de um model:

      
      rake g model usuario nome:string login:string senha:string
      
    

Para criar um controller:

      
      rake g controller home
      
    

Veremos agora como utilizar o controller home que foi criado e configurar para que seja exibido como padrão, rota principal onde todas requisições serão direcionadas.

Para isso edite o arquivo routes.rb, logo após a linha 2 onde tem os recursos de :carros, adicione o código abaixo:

    
      root to: 'home#index'
    
    

Pronto, mas note que não temos o método index ou qualquer outro no nosso controller, inclusive receberemos um erro ao acessar a aplicação agora.

Criamos um método index então:

    
      class HomeController < ApplicationController
        def index

        end
      end
    
    

Agora receberemos outro erro pois ele tentará recuperar uma view padrão para exibir mas ela não existe ainda.

Navegue até app/views/home, crie um arquivo chamado index.html.rb, dentro dele coloque:

    
    

Home do Site

Agora tudo funcionará, vamos apenas colocar um link para listagem de carros.

    
      Lista de carros
    
    

Pronto! Agora temos um link para a lista de carros.

Os outros generators que foram comentados e não foram vistos nessa aula serão abordados nas aulas futuras.





Próximas Aulas


Rails - Routes

Nessa aula iremos iniciar uma aplicação web do zero, agora passo a passo. Iremos ver algumas rotas u...

Rails - Partials

Nesta aula iremos aprender como dividir o conteúdo de nossos templates html em partials, evitando as...

Rails - Migrations

Nesta aula iremos aprender a diferença de fazer um modelo de forma manual e a agilidade que teremos ...

Rails - Forms

Nesta aula iremos aprender como fazer um CRUD de forma manual no Rails....

Rails - initializers

Nesta aula iremos aprender como configurar dados na inicialização de uma aplicação Rails....

Rails - Helpers

Nesta aula iremos aprender como utilizar back-end com front-end e organizar o código com helpers....

Rails - Utilizando arquivos estáticos e dinâmicos

Nesta aula iremos aprender como utilizar assets estáticos e assets dinâmicos em Rails....

Rails - Rake

Nesta aula iremos aprender como criar e configurar uma rake, veremos onde mais utilizamos em uma apl...



Danilo

Arquiteto de software, analista, programador, professor. Danilo criou o projeto torne-se um programador, para passar o seu conhecimento para a nova geração. Com o intuito de ser um bom pai, Danilo trabalha muito motivado para garantir o futuro de sua filha.

ELEVE SEUS GANHOS E POTENCIALIZE SUA PERFORMANCE

Receba nossa Ebook de LÓGICA DE PROGRAMAÇÃO

© Didox Business & Technology - CNPJ: 12.127.195/0001-14