Seven_Palestra_Banco_Dados_Servidores

  • 394 views
Uploaded on

Palestra sobre banco de dados e servidores na Seven

Palestra sobre banco de dados e servidores na Seven

More in: Education
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
394
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
16
Comments
0
Likes
1

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Banco de Dados D6, em homenagem ao Felipe Simões e ao Mairon Luz ;-) ... E ao Paulo Store o/ Cleber @ Tavares Junior .com
  • 2. Banco de DadosO que são?Em informática, resumidamente, são coleções de informações armazenadas,que relacionadas dão valor de negócio à um sistema / empresa.(Traduzindo em jogos: são o login do jogador e sua senha, seus pontos eníveis de personagem, seu equipamento e suas informaçõe$ de crédito)Dito isto, nós NÃO vamos falar sobre banco de dados...... apenas. Cleber @ Tavares Junior .com
  • 3. Banco de DadosVamos tentar mostrar toda a estrutura que envolve um Banco de Dados eseu desenvolvimento.KISS: Keep It Simple, Student.Mas existem muito mais coisas escondidas entre seu servidor nas nuvens eseu cliente / jogo no seu computador, Student... Cleber @ Tavares Junior .com
  • 4. Banco de DadosPrimeiro, retomando nossa definição de Banco de Dados, nos primeiríssimossistemas informatizados (antes da década de 70), estas informações eramguardadas no próprio sistema de arquivos do S.O.E isso gerava uma série de problemas...A partir daí surgiram os SGBD – Sistemas Gerenciadores de Banco deDados. Na década de 80 surgiram os SGBD relacionais, que estão emdomínio até hoje. Ou seja, tabelas. (MySQL, SQLite, PostgreSQL, Oracle$)Em tempos recentes vem surgindo com cada vez mais força os SGBDOrientados à Objetos, ou não-relacionais, com o movimento NoSQL (jávamos falar do SQL), como os MongoDB, CouchDB, e os da Google e Amazon Cleber @ Tavares Junior .com
  • 5. Banco de DadosEm suma, existem várias tecnologias de bancos de dados, cada uma com umacaracterística própria (simples e pequenos, simples, simples e escalável,robustos e caros), alguns gratuitos, outros pagos por diversos valores... Oprofissional que deseja trabalhar com isso precisa saber avaliar.Para lidar com todas estas diferenças, nos bancos de dados relacionais, foicriada uma linguagem padrão para manipulação das tabelas, a SQL(Structured Query Language, Linguagem de Consulta Estruturada), pelaIBM no início dos anos 70.Esta linguagem, assim como todas as outras linguagens de computador,evolui (estamos no SQL:2003). Infelizmente nem todos os SGBD seguem opadrão da linguagem à risca.Isto é uma típica representação esquemática de um SGBD: Cleber @ Tavares Junior .com
  • 6. Banco de DadosE a seguir uma breve apresentação da linguagem SQL. Ela serve para criar astabelas, as colunas / campos, inserir os dados, fazer a busca e o relacionamentoentre eles: Cleber @ Tavares Junior .com
  • 7. Banco de DadosSQL, resumo / palavras - chaveComandos de Criação Comandos de Controle Comandos de Transação(DDL) (DCL) (DTL)CREATE TABLE GRANT ROLLBACKALTER INDEX REVOKEDROP VIEW Cleber @ Tavares Junior .com
  • 8. Banco de DadosSQL, resumo / palavras - chaveComandos de Manipulação Comandos de Consulta(DML) (DQL)INSERT SELECTSELECTUPDATEDELETECRUD! Cleber @ Tavares Junior .com
  • 9. Banco de DadosO comando de consulta SELECT é o mais utilizado, nele temos as cláusulas:FROM, WHERE, HAVING, GROUP BY, ORDER BY, DISTINCT, JOINOs operadores lógicos:AND, OR, NOTOs operadores relacionais (muitas características do SQL foram baseadasna álgebra relacional):<, >, <=, >=., =, <>, BETWEEN, LIKE, INAs funções de agregação:AVG, COUNT, SUM, MAX, MIN Cleber @ Tavares Junior .com
  • 10. Banco de DadosPequenos exemplos de comandos SQL:CREATE TABLE Players( id INT NOT NULL AUTO_INCREMENT, name VARCHAR (60) NOT NULL, birth DATE, phone CHAR (8), PRIMARY KEY (id)) Players id name birth phone Cleber @ Tavares Junior .com
  • 11. Banco de DadosPequenos exemplos de comandos SQL:INSERT INTO Players VALUES (1, ‘Clever Tavares Jr., 1900-08-19,’’);Playersid name birth phone1 Clever Tavares Jr. 1900-08-19 Cleber @ Tavares Junior .com
  • 12. Banco de DadosPequenos exemplos de comandos SQL:INSERT INTO Players VALUES (3, ‘, 19/08/1900,26667070);Playersid name birth phone1 Clever Tavares Jr. 1900-08-193 19/08/1900 26667070Precisamos de uma maneira de assegurar que valores inválidos não sejaminseridos! Nossos dados tem que ser consistentes! Cleber @ Tavares Junior .com
  • 13. Banco de DadosPequenos exemplos de comandos SQL:SELECT * FROM Players;Playersid name birth phone1 Clever Tavares Jr. 1900-08-19SELECT name AS Nick FROM Player;PlayersNickClever Tavares Jr. Cleber @ Tavares Junior .com
  • 14. Banco de DadosPequenos exemplos de comandos SQL:SELECT name, birth FROM Players WHERE name LIKE ‘Cleber‘;Playersname birthSELECT TOP 5 name, value FROM Points ORDER BY value desc; /*;-)*/Chega! Cleber @ Tavares Junior .com
  • 15. Banco de DadosMas não temos apenas nosso banco de dados no processo. Para este ser acessadoremotamente, via web, precisamos de uma tecnologia de servidor, algumaaplicação / serviço que fique online o tempo todo provendo esta comunicação.Importante, esta aplicação ou programa, que nós desenvolvemos com linguagens deservidor como C# / Java / PHP / Python / Ruby, deve ser criada seguindo oesquema de implementação MVC, Model-View-Controller, Modelo(Banco)-Visualização(Página, Cliente)-Controlador(Acesso), ou seja, mantendo sua lógica deimplementação independente da camada de visualização e dos dados.A “camada de visualização”, pode ser uma página no navegador do jogador, ou umjogo em Flash no navegador do jogador, ou um jogo no computador do jogador. Éali no cliente que alguns dados devem ser tratados, com tecnologias / linguagensde cliente (html –eu sei-, css, javascript, em Flash, em Unity…), e outros devemvir/ir do/para o servidor, mantendo sempre o balanceamento adequado. Cleber @ Tavares Junior .com
  • 16. Banco de DadosNosso esquema fica assim: Cleber @ Tavares Junior .com
  • 17. Banco de DadosClaro que eu posso ter vários clientes: Cleber @ Tavares Junior .com
  • 18. Banco de DadosEstes clientes podem gerar uma carga / volume de acesso muito grande de talmodo que eu precise fazer o balanceamento / distribuição entre vários servidores Cleber @ Tavares Junior .com
  • 19. Banco de DadosNormalmente a base de dados é compartilhada, mas às vezes não! E é preciso termuito cuidado para manter os dados coesos / coerentes / sincronizados! Cleber @ Tavares Junior .com
  • 20. Banco de DadosE às vezes, as máquinas / computadores que são responsáveis pela aplicaçãoservidora e os SGBD´s nem são as mesmas, ou estão no mesmo lugar físico, e simespalhadas pelo mundo onde for mais conveniente.É o conceito “nas nuvens”. Que auxilia na escabilidade do projeto / jogo. Cleber @ Tavares Junior .com
  • 21. Banco de DadosTá, então quais tecnologias vamos escolher para nosso exemplo?1- Um computador rodando Windows 7 comum.ATENÇÃO! A grande maioria dos servidores é Linux, e boa parte das linguagensde servidor pode ser usada tanto em um quanto no outro (Java, PHP, Python,Ruby, MySQL…)2- O banco de dados MySQL, que é fácil de instalar, configurar e rodar noWindows e é bastante suportado, tendo uma interface gráfica facilitadora.3- A linguagem de programação Ruby e o framework de aplicações web Ruby OnRails, ambos compatíveis com Windows e Linux. Existem muitas páginas famosasque usam Rails, sendo este bastante famoso (Twitter…) e ele tem uma fortecomunidade. Apesar de não ser muito fácil usar em Windows, pode facilitar odesenvolvimento com scaffold… e é diferente ;-)Vamos lá detalhar isso: Cleber @ Tavares Junior .com
  • 22. Banco de Dados1- Sobre o sistema operacional, vale ressaltar aqui que uma vez que vocêdesenvolva no Windows, o processo de *deploy*, ou colocar em produção /funcionamento em um servidor com Linux, pode ser trabalhoso. Mas os servidoresLinux são mais baratos (e robustos e seguros…). Fica o aviso. Não veremos issoaqui hoje. Cleber @ Tavares Junior .com
  • 23. Banco de Dados2- Banco de dados MySQL;http://www.mysql.com/downloads/mysql/Gratuito na versão Community, com código fonte se quiser, 30 megas.Esta é a versão mais nova.Você pode experimentarversões mais antigas(5.0 e 5.1) se tiverproblemas decompatibilidade Cleber @ Tavares Junior .com
  • 24. Banco de Dados Cleber @ Tavares Junior .com
  • 25. Banco de Dados Cleber @ Tavares Junior .com
  • 26. Banco de Dados Cleber @ Tavares Junior .com
  • 27. Banco de Dados Cleber @ Tavares Junior .com
  • 28. Banco de Dados Cleber @ Tavares Junior .com
  • 29. Banco de Dados Cleber @ Tavares Junior .com
  • 30. Banco de Dados Cleber @ Tavares Junior .com
  • 31. Banco de DadosPodemos testar como acima para saber se tudo está ok.Podemos fazer tudo via linha de comando (cmd).Mas também podemos ter um editor visual para ajudar.Aí entra o SQLyog:http://www.webyog.com/en/http://code.google.com/p/sqlyog/downloads/listVamos fazer o download da versão Community gratuita e instalar. Cleber @ Tavares Junior .com
  • 32. Banco de Dados Cleber @ Tavares Junior .com
  • 33. Banco de Dados Cleber @ Tavares Junior .com
  • 34. Banco de Dados Cleber @ Tavares Junior .com
  • 35. Banco de Dados Cleber @ Tavares Junior .com
  • 36. Banco de Dados Cleber @ Tavares Junior .com
  • 37. Banco de Dados Cleber @ Tavares Junior .com
  • 38. Banco de DadosTemos agora o banco de dados MySQL funcionando com um editor visual noWindows, vamos ao próximo passo:3- A linguagem de programação Ruby e o framework de aplicações web Ruby OnRails, ambos compatíveis com Windows e Linux e também tendo vários editores.http://rubyinstaller.org/ Cleber @ Tavares Junior .com
  • 39. Banco de Dados Cleber @ Tavares Junior .com
  • 40. Banco de Dados Cleber @ Tavares Junior .com
  • 41. Banco de Dados Cleber @ Tavares Junior .com
  • 42. Banco de DadosNão esquecer de na mesma página baixar o Ruby Development Kit, que permitiráinstalar extensões nativas como o mysql2!Assim que terminar o download, você deverá extrair os arquivos para o diretório /pasta C:ruby193devkit, que não existe e precisa ser criado.Agora, volte ao terminal. Você precisará instalar o DevKit na instalação atual doRuby. Para isso, digite os comandos: cd C:Ruby193devkit para ir ao diretório que você acabou de extrair. Execute oscomandos:ruby dk.rb init e depois ruby dk.rb install Cleber @ Tavares Junior .com
  • 43. Banco de DadosNão acabou :-/ Nós ainda precisamos configurar o Ruby para suporte ao MySQL.Para fazer isso, acesse a página de downloads do MySQL e clique no link MySQLConnectors. Precisaremos da versão "Connector/C (libmysql)". Na página dedownload, escolha a opção sem o instalador. Escolha a versão de 32-bits. Isso énecessário porque o Ruby é 32-bits e, mesmo que a instalação do MySQL tenhasido feita em 64-bits, o conector que será usado por ele deve ter a mesmaarquitetura. Extraia os arquivos e copie o arquivo mysql-connector-c-noinstall-6.0.2-win32/lib/libmysql.dll para o diretório C:Ruby193bin. Isso énecessário pois DLLs precisam estar no PATH do Windows e, o diretório bin doRuby no Windows está lá. Cleber @ Tavares Junior .com
  • 44. Banco de Dadoshttp://www.mysql.com/downloads/connector/ Cleber @ Tavares Junior .com
  • 45. Banco de DadosATENÇÃO! Os passos acima são os mais problemáticos. Se não conseguir rodar seuservidor, veja solução mais abaixo. Cleber @ Tavares Junior .com
  • 46. Banco de DadosLembrando que:“Nada é totalmente fácil ou difícil, esta é a beleza do mundo. Cabe à pessoa julgaras ferramentas para alcançar seus objetivos.”A linguagem Ruby junto com o framework para desenvolvimento web Rails tem suasvantagens em relação ao PHP, incluindo um modelo de MVC (já discutido) embutido.Com o até aqui feito, temos esta nova linguagem em nossa máquina habilitada paratrabalhar com MySQL. Mas a linguagem não é tudo. Assim como em C# eu tenho oframework (conjunto de classes) XNA para me facilitar o desenvolvimento dejogos, em AS3 eu tenho a library / biblioteca Box2D para física, em ambienteMobile / Java eu tenho uma série de frameworks (AndEngine, Cactus2D,XNAndroid) para jogos, ou posso usar a engine (grande conjunto de ferramentas)Unity em C# ou Boo, eu preciso de um framework para direcionar meu aplicativo /ranking na web.Este framework se chama Ruby On Rails (Ruby nos trilhos). Vamos instalá-lo. Cleber @ Tavares Junior .com
  • 47. Banco de DadosO comando acima instala as classes sem a documentação, que é demorada… Cleber @ Tavares Junior .com
  • 48. Banco de DadosAproveitando que estamos falando sobre isso tudo, não poderia deixar de chamar aatenção para se verificar se está instalado na máquina também um sistema decontrole de versão. Isto é importantíssimo em qualquer desenvolvimento desistemas ou jogos. Sugiro o TortoiseSVN, e aos mais corajosos o Git, que já temversão estável para Windows. (TortoiseGIT…) Mas foge ao escopo deste trabalhofalar sobre isso agora.Vamos atualizar coisas que o rails precisa para criar uma app (bundle…):gem updategem install rake –v 0.9.2.2gem install coffee-script-source -v 1.3.3gem install execjs -v 1.4.0gem install coffee-script -v 2.2.0gem install coffee-rails -v 3.2.2gem install jquery-rails -v 2.0.2gem install mysql2 -v 0.3.11gem install sass –v 3.1.20gem install sass-rails -v 3.2.5gem install uglifier -v 1.2.6 Cleber @ Tavares Junior .com
  • 49. Banco de DadosAlternativa para tanta atualização: http://railsftw.bryanbibat.net/MUITO BOM!!! Cleber @ Tavares Junior .com
  • 50. Banco de DadosAgora podemos dar o comando para criar nossa aplicação / app rails:Rails new teste –d mysqlCom este comando (que deve ser dado em um diretório adequado) criamos umsubdiretório chamado teste, onde se cria toda a estrutura (quq já vamos ver) doRails, usando um banco de dados mysql (sqlite é o padrão)Mas espere! E para editar os arquivos? Vamos ficar na linha de comando o tempotodo? Não… Existem muitos editores (a.k.a. Flash IDE, Flash Develop, VisualStudio, Eclipse, Mono Develop) que você pode usar para Rails, que reconhecem asintaxe do Ruby, desde gratuitos até pagos de diversos valores. Sugestões temoso Notepad++, Redcar, Scite, gEdit… o próprio Eclipse…Mas vamos ficar de NetBeans. Mesmo com os problemas dele… (peso e obsolência) Cleber @ Tavares Junior .com
  • 51. Banco de Dadoshttp://netbeans.org/downloads/6.9.1 Cleber @ Tavares Junior .com
  • 52. Banco de Dados Cleber @ Tavares Junior .com
  • 53. Banco de Dados Cleber @ Tavares Junior .com
  • 54. Banco de Dados Cleber @ Tavares Junior .com
  • 55. Banco de DadosVeja como o Rails organiza nossos arquivos (lembrando esta pasta foi importada, nenhum arquivo foi criado pelo NetBeans) Lembra do conceito de MVC para melhorar nossa lógica do servidor? Model-View-Controller? Repare que temos uma pasta de Models (para os modelos que representam justo a base de dados) Uma pasta de Views, para as visualizações/layouts E uma pasta de Controllers/lógica Além disso uma pasta com Helpers/Auxiliares, um enviador de email, Confidurações, pasta Pública, Logs de servidor, arquivos de teste e documentação (Rails te orienta a fazer os testes de lógica de servidor!), bibliotecas e… migrations! Cleber @ Tavares Junior .com
  • 56. Banco de DadosAs migrations tem a ver com nosso banco de dados, são as mudanças nele ao longodo desenvolvimento de nossa aplicação. Pense na importância disso. Se seu bancode dados não corresponder à lógica da sua aplicação (controllers / views), vocêcorre o risco de tentar exibir algo que não existe (erro na certa) ou de guardarinformações desnecessárias (desperdício). Coerência.“Uma página é uma exibição de um banco de dados”, controverso… especialmenteem jogos.As migrations e o models nos “protegem” de ter que lidar com a linguagem SQLdiretamente…Vamos gerar no nosso banco / página as informações anteriores de Player (o inglêsé quase necessário para programar web / sistemas / rails / páginas…) Cleber @ Tavares Junior .com
  • 57. Banco de Dadosrails generate scaffold Player name:string birth:date phone:string Cleber @ Tavares Junior .com
  • 58. Banco de DadosScaffold = arcabouço = migration (mudança no BD) + Model (representação do BDno servidor) + Controller (fluxo de telas) + View (exibição), tudo junto.Vamos colocar nossa aplicação nesta versão: Migrar o Banco de DadosOpa, fomos negados! Que houve? Não conseguimos acesso aoBanco de Dados.Vamos editar nosso arquivo de configuração no NetBeans. Cleber @ Tavares Junior .com
  • 59. Banco de Dados Cleber @ Tavares Junior .com
  • 60. Banco de DadosEste é nosso arquivo de configuração do acesso do servidor na base de dados, todatecnologia de servidor tem essa configuração. Repare que Rails nos dáautomaticamente 3 tabelas (que devem ser criadas), chamadas por padrão denome_development, nome_teste, nome_production, com configurações separadaspara cada uma. Tudo para orientar o bom desenvolvimento!Vamos configurar a tabela de desenvolvimento: Cleber @ Tavares Junior .com
  • 61. Banco de Dados Cleber @ Tavares Junior .com
  • 62. Banco de DadosUma vez com isso salvo vamos rodar nossa migração:Ok. Vamos rodar nosso servidor e ver isso?Como assim rodar o servidor? Ah, não contei? Quando você faz o código, precisade algo para executá-lo. Um Apache Server da vida, vai ler seu código e atender àsrequisições de página.Sorte nossa que o Rails vem com um servidor embutido, o WEBrick, basta chamá-loassim: (ah, e podemos depois mudar de servidor se quisermos, inclusive paraApache) Cleber @ Tavares Junior .com
  • 63. Banco de Dadosrails serverRepare que ele está “ouvindo” (atendendo requisições) em http://localhost:3000 Cleber @ Tavares Junior .com
  • 64. Banco de DadosTcharam! Temos uma página rodando, “Hello World” (antes mesmo da migration) Cleber @ Tavares Junior .com
  • 65. Banco de DadosE olhando direto no SQLyog nossa base de dados, vemos que ela já está com atabela correta (lembre, um comando para gerar os arquivos e outro para migrar) Cleber @ Tavares Junior .com
  • 66. Banco de DadosSe olharmos no NetBeans nossas pastas e arquivos, vemos que temos já controllerse views para Player: Cleber @ Tavares Junior .com
  • 67. Banco de DadosLembrando que os controllers direcionam o fluxo de nossa aplicação, ou seja, quepágina mostrar. Sabe uma página “index”? Pois é, olha lá o método de resposta àela ali…E começamos aqui a ver um pouco mais de perto a linguagem Ruby. Não é tãodifícil, é? AS funções/métodos são defs, com end no final (parece Basic). O@players é um conjunto de players… sim, instâncias de uma classe.Conhece o RPG Maker? Sabe sua linguagem de programação? RGSS? Ruby GameScript System! Isso aí! São a mesma. Cleber @ Tavares Junior .com
  • 68. Banco de DadosRepare que eu estou na verdade mapeando um método de acesso à página dopróprio protocolo http, o GET. O GET sem número em um controller lê todos osobjeots correspondentes, o GET/numero retorna o objeto com aquele id, assimcomo os métodos POST, PUT e DELETE estão mapeados… isso se chama REST e éuma técnica muito eficiente.Em Rails, não saia dos “trilhos”. Mantenha seus nomes corretos e tudo fará sentidoe funcionará automaticamente. Esta é a filosofia do framework.Vamos “olhar” a view? Cleber @ Tavares Junior .com
  • 69. Banco de DadosRepare como funciona bem como uma camada de visualização, sem interferir nosdados e podendo ser mudada à vontade. Inclusive traduzida, sem mudar a base. Cleber @ Tavares Junior .com
  • 70. Banco de DadosO que temos aqui é aquela lista de @players sendo mostrada. Repare no “for each”.Epa, peraí… eu não escrevi código nenhum, será que eu já posso ver isso? Hum… Cleber @ Tavares Junior .com
  • 71. Banco de DadosUau! Eu tenho uma página com uma listagem dos jogadores e um cadastro!1- Vamos ver seu código fonte, o html? Cleber @ Tavares Junior .com
  • 72. Banco de Dados Cleber @ Tavares Junior .com
  • 73. Banco de DadosRepare que eu tenho um código “limpo” no cliente, com a importação automática dealguns javascripts padrões (posso alterar), alguns metanames padrões (tambémposso alterar) e a tabela com um link para criar um novo jogador.É assim que funciona uma tecnologia de servidor. Gera uma página ou informaçãodinâmica e “cospe” ela para quem pedir. (perdão pelo termo, culpa do Carlos)Voltando ao controller, ele responde à requisições html e também… xml! Comoisso? Vamos acessar a mesma coisa, uma listagem dos jogadores, mas em xml: Cleber @ Tavares Junior .com
  • 74. Banco de DadosRepare que ele não deu erro! Apenas mostrou o XML vazio, afinal, ainda não temosjogadores. Ou recordes, ou imagens, o que seja. Mas se tivéssemos estaria ali, semnenhum esforço! Qual a importância disso? Se tivéssemos acessando estasinformações pela página, mostramos o html. Mas se tivéssemos nosso cliente emUnity ou XNA ou Flash para mostrar a lsita de jogadores, por exemplo, qual amelhor maneira de fazer isso? XML! Cleber @ Tavares Junior .com
  • 75. Banco de Dados2- Muito bonito, mas a bagaça funciona?Vamos tentar cadastrar um novo jogador: Cleber @ Tavares Junior .com
  • 76. Banco de Dados2- Muito bonito, mas a bagaça funciona?Vamos tentar cadastrar um novo jogador: Cleber @ Tavares Junior .com
  • 77. Banco de Dados2- Muito bonito, mas a bagaça funciona?Vamos tentar cadastrar um novo jogador: Cleber @ Tavares Junior .com
  • 78. Banco de Dados2- Muito bonito, mas a bagaça funciona?Vamos tentar cadastrar um novo jogador:Definitivamente funciona. Cleber @ Tavares Junior .com
  • 79. Banco de DadosMostrando um pouco de testes: Cleber @ Tavares Junior .com
  • 80. Banco de DadosUma vez com o banco populado, como fica o xml: Cleber @ Tavares Junior .com
  • 81. Banco de DadosDe um player só: Cleber @ Tavares Junior .com
  • 82. Banco de DadosÉ possível ver o dump da database Cleber @ Tavares Junior .com
  • 83. Banco de DadosNão satisfeito com os testes e a lógica de “negócio”, quer mais facilidade paracriar a aplicação?Lembra no início que nossa tabela tinha o nome do jogador como campoobrigatório? Pois é, vamos ao model do player (nosso correspondente da tabela)resolver isso:Estava assim:Ficou assim: Só isso… vamos à página… Cleber @ Tavares Junior .com
  • 84. Banco de DadosSe eu tentasse cadastrar em branco antes poderia… Cleber @ Tavares Junior .com
  • 85. Banco de DadosAgora não mais… Ah, as mensagens de erro são personalizáveis. Cleber @ Tavares Junior .com
  • 86. Banco de DadosQuais validates exitem?validates :terms_of_service, :acceptance => truevalidates :email, :confirmation => truevalidates :email_confirmation, :presence => truevalidates :legacy_code, :format => { :with => /A[a-zA-Z]+z/, # expressões regulares :message => "Only letters allowed" }validates :name, :length => { :minimum => 2 }validates :bio, :length => { :maximum => 500 }validates :password, :length => { :in => 6..20 }validates :registration_number, :length => { :is => 6 }validates :email, :uniqueness => truehas_many :posts, :dependent => :destroyhas_one :image Cleber @ Tavares Junior .com
  • 87. Banco de DadosRails pode trabalhar com sistemas de arquivos, anexos, o que você quiser, de formafácil, basta usar a imagninação e a pesquisa ;-)Usanod os validates corretos você consegue montar os relacionamentos entre osmodelos, e a busca de informações. Cleber @ Tavares Junior .com
  • 88. Banco de DadosUma ótima dica de documentação, não apenas de Ruby ou Rails, mas de dezenas delinguagens e frameworks: Cleber @ Tavares Junior .com
  • 89. Banco de DadosUma ótima dica de documentação, não apenas de Ruby ou Rails, mas de dezenas delinguagens e frameworks: Cleber @ Tavares Junior .com