[RoR] Como gerar e validar scaffold
4 set 2011(há 14 anos)No último post vimos como criar models com RoR, agora daremos continuidade mostrando como fazer gerar um scaffold que, falando de um modo meio grosseiro, nada mais é que um gerador de CRUD, que gera controllers, models, views e a migração do banco de dados.
No post anterior foi criado o projeto producer e aproveitamos para criar também o model User, e como tinha prometido voltei para mostrar o scaffold, então sem muito blá blá blá, vamos lá...
Start
Para continuarmos , vou abrir o terminal e navegar até o projeto producer e gerar meu scaffold, vou gerar o classe Post com os atributos title, excerpt, body.
~$ cd RailsProjects/producer ~/RailsProjects/producer$ rails generate scaffold Post title:string excerpt:string body:text
Vejam que o scaffold criou varios arquivos, de migração do banco de dados, models, controllers, helper, estilos css, views, teste unitários entre outros, mas bem agora é hora de fazermos a migração do banco de dados.
![](http://images.wfsneto.com.br/2011/09/scaffold.png)
Agora vamos executar um migrate para criar a tabela do banco de dados
~/RailsProjects/producer$ rake db:migrate
![](http://images.wfsneto.com.br/2011/09/rake_db-migrate.png)
Validação
Podemos testar acessando http://0.0.0.0:3000, ao tentar adicionar post, percebera que é possível adicionar um post em branco, por isso iremos editar o arquivo post.rb que está dentro da pasta app/models
class Post < ActiveRecord::Base # validação para campos em branco validates_presence_of :title, :body end
Já que estamos falando de validação vamos fazer a validação dos model User:
class User < ActiveRecord::Base # validação para campos em branco validates_presence_of :email, :first_name, :last_name # validação para que os campos não se repita validates_uniqueness_of :email # validação para formato dos campos validates_format_of :email, :with => /A([^@ ]+)@((?:[-a-z0-9]+.)+[a-z]{2,})Z/i end
Conclusão
Agora tente adicionar e se tudo ocorreu bem você não conseguirá adicionar os campos em branco, caso queira o código deste tutorial clique aqui, bem, isso é tudo pessoal, to be continued...