-
Notifications
You must be signed in to change notification settings - Fork 0
Passo [05] Primeiro CRUD
Agora que já temos uma noção básica do roteamento do Rails, vamos fazer um CRUD. Para facilitar as coisas, o Rails oferece mais um gerador muito útil, o scaffold. Scaffolding não é uma prática muito utilizada em desenvolvimento real do dia-a-dia, mas é uma forma de aprendermos como utilizar a infra-estrutura do Rails como um todo.
Para começar, vamos criar um cadastro simple de Empresa, aonde a empresa deve ter uma Razão Social, CNPJ, Telefone para contato, link para o website e uma descrição.
Para facilitar as coisas, você pode usar este CNPJ: 59911948000141 ( créditos para http://www.gerardocumentos.com.br )
Abra o terminal novamente na pasta do projeto, e execute o seguinte comando:
$ rails generate scaffold Empresa razao_social:string cnpj:string telefone:string website:string descricao:text
Vamos analisar rapidamente o output deste comando:
invoke active_record
create db/migrate/20111113003544_create_empresas.rb
create app/models/empresa.rb
invoke test_unit
create test/unit/empresa_test.rb
create test/fixtures/empresas.yml
route resources :empresas
invoke scaffold_controller
create app/controllers/empresas_controller.rb
invoke erb
create app/views/empresas
create app/views/empresas/index.html.erb
create app/views/empresas/edit.html.erb
create app/views/empresas/show.html.erb
create app/views/empresas/new.html.erb
create app/views/empresas/_form.html.erb
invoke test_unit
create test/functional/empresas_controller_test.rb
invoke helper
create app/helpers/empresas_helper.rb
invoke test_unit
create test/unit/helpers/empresas_helper_test.rb
invoke assets
invoke coffee
create app/assets/javascripts/empresas.js.coffee
invoke scss
create app/assets/stylesheets/empresas.css.scss
invoke scss
create app/assets/stylesheets/scaffolds.css.scss
Além de Assets, Testes funcionais e unitários, Helper e um Modelo para a classe Empresa, o gerador atualizou o arquivo de rotas e criou um arquivo de Migração.
Arquivos de Migração ou Migrations são responsáveis por mapear o esquema do banco para classes Ruby, o nome do arquivo gerado contém um TimeStamp e um nome legível descrevendo o que este Migration faz.
db/migrate/2011XXXXXXXXXX_create_empresas.rb
Vamos dar uma olhada no que foi gerado:
class CreateEmpresas < ActiveRecord::Migration
def change
create_table :empresas do |t|
t.string :razao_social
t.string :cnpj
t.string :telefone
t.string :website
t.text :descricao
t.timestamps
end
end
end
Não vamos entrar em detalhes agora, mas é fácil notar que um arquivo de migração não é nada mais do que uma classe, isso quer dizer que dentro de um arquivo deste é possível adicionar métodos com lógica e até importar bibliotecas. Por exemplo, se você tem uma tabela com atributos nome e sobrenome e quiser adicionar uma nova coluna chamada nome_completo com o valor concatenado dos dois atributos já existentes, é possível.
Bom, como podemos acessar esse scaffold (CRUD) ? O Rails, usando de convenção, mapeou a rota do CRUD do Model Empresa para /empresas, acesse: http://localhost:3000/empresas
Oooops!
Não foi possível encontrar a tabela 'empresas', percebeu alguma coisa? O Rails procurou por uma tabela chamada 'empresas', mas não criamos o banco de dados ainda!
Vamos utilizar mais uma ferramenta para gerenciar este recurso para nós, Rake.
Execute este comando para que o Rake possa executar a tarefa de migração do banco de dados:
$ rake db:migrate
( sincronizando os arquivos de migração com o banco de dados... )
== CreateEmpresas: migrating =================================================
-- create_table(:empresas)
-> 0.0019s
== CreateEmpresas: migrated (0.0021s) ========================================
Ok! Agora temos uma tabela no banco de dados... Mas aonde está o banco de dados? Abra o arquivo 'config/database.yml'
Por padrão, uma aplicação Rails 3 utiliza SQlite3, no fundo não faz diferença se estamos desenvolvendo a aplicação para PostgreSQL, SQlite ou Oracle, já que o framework de banco de dados do Rails ( ActiveRecord ) abstrai as particularidade de cada um em prol do desenvolvedor. Como o SQlite3 não precisa de um serviço rodando, isso faz com que seja mais rápido de se preparar um ambiente de desenvolvimento Rails.
Atualize o navegador novamente:
Cadastre o seu primeiro registro:
Pronto! Seu primeiro CRUD em Rails está funcionando.