O model é o componente da arquitetura de software MVC que faz a comunicação com o banco de dados (acessar e editar o banco de dados), ou seja, é no model que ficam as regras de negócio. O Rails conta com uma biblioteca para o desenvolvimento dos models de forma rápida, segura e organizada, essa biblioteca é chamada de ActiveRecord. No Rails, o model faz referências a uma tabela no banco, logo se existir um model, existe uma tabela associada a ele (essa é a ideia básica, mas não uma regra, pois é possível ter um model não associado a uma tabela).
É possível criar uma tabela manualmente, porém para alterá-la é necessário alterar manualmente em cada máquina que estiver o projeto, o que torna um processo trabalhoso, então, com o objetivo de resolver esse problema, o Rails possui o ActiveRecord::Migrations que uma classe do ActiveRecord que define a tabela de forma que cada alteração seja facilmente enviada a todas as máquinas com o projeto. O modelo abaixo é de uma migration (nome dado a classe que herda de ActiveRecord::Migrations) em que é criada uma tabela chamada “produtos” e um campo “nome”:
class CreateProductos < ActiveRecord::Migration def change create table :produtos do |t| t.string :nome end end end
O método change suporta:
-
add_column
-
add_index
-
add_reference
-
add_timestamps
-
create_table
-
create_join_table
-
drop_table (must supply a block)
-
drop_join_table (must supply a block)
-
remove_timestamps
-
rename_column
-
rename_index
-
remove_reference
-
rename_table
As migrations ficam salvas como: db/migrate/<timestamp>_<migration>.rb.
O comando “rake db:migrate” executa, no console, as migrations que ainda não foram executadas.
Para mais informações sobre migrations: http://guides.rubyonrails.org/migrations.html
É possível gerar, de forma dinâmica, uma migration a partir do console.
Abaixo estão apresentados alguns comandos:
Criar tabela:
rails g migration Create<Tabela> < campo1>:tipo <campo2>:tipo <campon>:tipo
Ex.: será criada uma migration chamada “CreateProducts” com o nome “products”:
rails g migration CreateProducts name:string
Adicionar coluna em uma tabela (depois da tabela ter sido criada):
rails g migration Add<Coluna>To<Tabela> <nome_da_coluna>:tipo
Ex.: será criada uma migration “AddRefToProducts” que acrescentará uma coluna chamada “ref” a tabela “products”:
rails g migration AddRefToProducts ref:string
Nota: é possível usar “rails generate…” ou simplesmente “rails g…”, pois eles são equivalentes.
Para mais informações sobre o rails generate acesse: http://guides.rubyonrails.org/migrations.html#creating-a-migration
* João Paulo é estudante de Computação e estagiário da SWX