Ruby On Rails - Criando um BLOG com NetBeans - 1a Parte

Este tutorial utiliza MySQL como Banco de Dados e NetBeans como IDE para Ruby On Rails.

Algumas convenções:


Nome da Entidade/Model
Nome da classe no singular em inglês (ex.: person

Nome da Tabela correspondente
Nome da tabela no plural em inglês (ex.: people)

Se houver tabela de relacionamento para many-to-many
Nomes das duas tabelas, separadas por “_” e em ordem alfabética (ex.: people_users)

Nome da coluna que é chave primária, de qualquer tabela
id (e será sempre integer e, se o banco suportar, auto incrementado

Nome de coluna para chave estrangeira
Nome da tabela a quem se liga, no singular, concatenado com _id. (ex.: person_id)


Não somos obrigados a seguir estas convenções, mas se as convenções forem seguidas as configurações diminuirão para perto de zero. Neste exemplo, queremos seguir os padrões.

Uma coisa que Rails ainda não faz é criar o banco de dados propriamente dito.
Por isso, antes de criar um projeto do Ruby On Rails no NetBeans, entre no prompt de comando do MySQL e crie uma Base de Dados conforme figura abaixo, não se preocupe com as tabelas o Ruby On Rails fará isso por nós.



Na IDE do NetBeans, Selecione File >> New Project, em Categories selecione Ruby, em Projects selecione Ruby On Rails Application conforme figura abaixo:



Click em Next, na próxima etapa em Project Name digite rubyweblog, conforme figura abaixo:



Click em Finish, em seguida coloque o username e password no arquivo database.yml conforme figura abaixo:



Agora vamos utilizar o generator do Rails para criar um model para o Blog.
Na janela de Projetos click com o botão direito do mouse em Models e click em Generate . . .
Na tela que vai aparecer em Arguments digite o seguinte:
Post title: String

Uma das convenções de Rails é que os nomes das tabelas sejam no plural, em inglês.

Veja figura abaixo:



Click em Ok, seu projeto deverá ficar assim:



Na janela acima observe o arquivo criado 001_create_posts.rb, sim é ele que vai criar a tabela Posts no MySQL com uma coluna chamada titles do tipo string. Para isso, faça o seguinte:
Na janela de Projetos click com o botão direito no projeto e selecione Migrate DataBase >> To Current Version . . . pronto o MySQL já tem uma tabela chamada Posts.

Agora vamos criar um Controller para o projeto.
Na janela de Projetos click com o botão direito do mouse em Controllers e click em Generate . . .
Na tela que vai aparecer em Name digite Blog, veja figura abaixo:



Click em Ok, veja figura abaixo:



Agora no arquivo blog_controller.rb coloque o seguinte código, conforme figura acima:
scaffold :post

O scaffold serve para criar os ligamentos entre Model-View-Controller em termos das operações CRUD.
C - Create
R - Read
U - Update
D - Delete

Na janela de Projetos expanda a Pasta Configuration e abra o arquivo routes.rb (define como as URLs são mapeadas para controllers e ações) . Procure a seguinte linha:

# map.connect '', :controller => "welcome"

Remova o comentário (#), e troque "welcome" por "blog" veja figura abaixo:




Novamente na janela de Projetos expanda a Pasta Public e delete o arquivo index.html

Click em File >> Save All e rode a aplicação pressionando F6 . . . vc deverá visualizar a figura abaixo:



O próximo passo agora é criar um campo para que o usuário digite a mensagem no Blog. Para isso na janela de Projetos click com o botão direito do mouse em DataBase Migrations e click em Generate . . . em Arguments coloque AddBody conforme figura abaixo:



No arquivo criado 002_add_body.rb digite o seguinte código logo após def self.up:
add_column :posts, :body, :text
*Se você digitar mcol e teclar TAB a IDE colocará um template em seu código.

Veja figura abaixo:



Agora na janela de Projetos click com o botão direito no projeto e selecione Migrate DataBase >> To Current Version . . . para criar o campo body do tipo text na Tabela Posts.

Não queremos que o título e a mensagem fiquem sem preenchimento, então vamos fazer a validação dos campos.
Na janela de Projetos expanda a Pasta Models e de um duplo click no arquivo post.rb, insira o seguinte código:
validates_presence_of :title, :body
*Se você digitar vp e teclar TAB a IDE colocará um template em seu código.

Veja figura abaixo:



Compilei e adicionei alguns Posts, vejam como ficou:



Vamos melhorar a interface do Blog ?? Então vamos lá . . .
Na janela de Projetos click com o botão direito do mouse em Views e click em Generate . . .
Na tela que vai aparecer no Combo Box Generate selecione scaffold, em Model Name digite Post, em Controoler Name digite Blog e selecione Overwrite. Veja figura abaixo:



Click em Ok

Na janela de Projetos click com o botão direito do mouse em
Views >> Blog e abra o arquivo list.rhtml.
Agora substituia o código entre <h1> e <Table> por este:


<h2>Blog Ruby On Rails</h2>
<% @posts.each do |post| %>
<h3><%= post.title %></h3>
<p><%= post.body %></p>
<h3> <%= link_to 'View', :action => 'show', :id => post %></h3>
<hr>
<% end %>

Pronto, a primeira parte está ok . . .

Procurar neste site . . .