Ruby on Rails na                    práticaTúlio Ornelas
2
Agenda•   Sobre o Ruby•   Como instalar•   Algumas estruturas da linguagem•   Sobre o Rails•   Como instalar•   Algumas Ca...
Um pouco sobre Ruby•   Criada em 1993 por Yukihiro Matz•   Linguagem interpretada•   “Tipagem” dinâmica•   Orientada a obj...
Um pouco sobre Ruby• Instalando - Linux: sudo apt-get install ruby - Windows: One-Click-Installer       •   http://rubyins...
Um pouco sobre Ruby• Interpretando um comando - Interactive Ruby Shell (IRB)    [tulios] ~ irb    >> puts "Oi"    Oi• Inte...
Um pouco sobre Ruby• Em Ruby tudo é OO [tulios] ~ irb >> 12.class => Fixnum >> true.class => TrueClass >> nil.class => Nil...
Um pouco sobre Ruby• Booleans - As únicas coisas falsas são nil e false              [tulios] ~ irb          >> if 0      ...
Um pouco sobre Ruby• Variáveis - Local           user - De instância    @user - De classe       @@user - Globais         $...
Um pouco sobre Ruby• Criando uma classe - Em Ruby             Em Java                                 10
Um pouco sobre Ruby• Criando um objeto - Ruby - Java• Note a sintaxe simplificada, não é  necessário declarar o tipo da  va...
Um pouco sobre Ruby• Criando uma classe com método - Ruby         Java                                  12
Um pouco sobre Ruby• Utilizando a classe no IRB - Importar a classe: require   [tulios] ~ irb   >> require user   => true ...
Um pouco sobre Ruby• Utilizando construtores - Ruby             Java                            14
Um pouco sobre Ruby• Analisando               - Não é necessário               definir o tipo de retorno               - Nã...
Um pouco sobre Ruby• Construtor e “sobrecarga” do construtor                                 16
Um pouco sobre Ruby• Métodos - De instância  -   Da classe                       17
Um pouco sobre Ruby • Vamos praticar![tulios] ~ irb>> require user=> true>> user = User.new "Tulio"=> #<User:0x101238410 @...
Um pouco sobre Ruby    • Todo atributo em Ruby é privado!?> user.nomeNoMethodError: undefined method `nome for #<User:0x101...
Um pouco sobre Ruby• Métodos de acesso as variáveis                                   20
Um pouco sobre Ruby• Vamos testar!                  [tulios] ~ irb                  >> require user                  => tr...
Um pouco sobre Ruby• Como criar o get e o set “na mão”? [tulios] ~ irb >> require user => true >> user = User.new => #<Use...
Um pouco sobre Ruby• Modificadores de acesso - Privados e protegidos -   Públicos     •   Modificador padrão, não é necessár...
Um pouco sobre Ruby• Utilizando a classe em outro .rb - Importar a classe: require                                     24
Um pouco sobre Ruby• Herança                      25
Um pouco sobre Ruby  • Testando[tulios] ~ irb>> require user=> true>> user = User.new "123456"=> #<User:0x101230bc0 @idade...
Um pouco sobre Ruby• Testando a herança  [tulios] ~ irb  >> require user  => true  >> Person.superclass  => Object  >> Use...
Um pouco sobre Ruby• Loops - for                      28
Exercício• Imprimir os números impares até 10                                       29
Exercício• Solução                        30
Um pouco sobre Ruby• Outros Loops - while                       31
Um pouco sobre Ruby• Outros Loops - iteradores                       32
Um pouco sobre Ruby• Outros Loops - métodos da classe Fixnum                              33
Um pouco sobre Ruby• Array e Hash                       34
Um pouco sobre Ruby• Exceções                       35
Um pouco sobre Ruby• Classes abertas                    [tulios] ~ irb                    >> require arquivo              ...
Quer aprender mais?http://www.pragprog.com                             37
O que é o Rails?• Meta-framework MVC• Desenvolvido em linguagem Ruby• Baseado em convenções• http://guias.rubyonrails.pro....
Rails• Lançado em julho de 2004• Criado por David Heinemeir  Hansson• Conceitos - DRY (Don’t Repeat Yourself) - Convention...
Rails - composição• O Rails é a junção de 5 frameworks - Active Record (ORM) - Action Pack (MVC) - Action Mailer - Active ...
Rails - instalando• O Rails é uma RubyGem• Uma gem é código ruby empacotado  [tulios] ~ gem -v  1.3.6                     ...
Rails - instalando• gem install rails• Vamos utilizar o SQLite3 - gem install sqlite3-ruby (driver)                       ...
Rails - instalando• Verificando a instalação[tulios] ~ gem list                                 [tulios] ~ rails -v        ...
Rails - criando o projeto• Abra o terminal e utilize o comando: - rails <nome do projeto>   [tulios] ~ rails bug_tracking ...
Rails - criando o projeto• Vamos subir o servidor - ruby script/server     [tulios] ~/exemplo/bug_tracking ruby script/ser...
Rails - criando o projeto• Página de início                            46
Rails - o projeto• Analisaremos apenas o diretório  APP, por enquanto                Controllers                 - Control...
Rails - scripts• Generate - Cria uma estrutura básica para o modelo• Server - Inicia o servidor da aplicação• Modo de usar...
Rake• Semelhante ao make do C/C++ ou  Ant do Java• “A simple ruby build program with capabilities  similar to make.”  [tul...
Rails - o projeto• Configuração padrão do banco - O banco padrão é o SQLite3, que é um    banco de dados embarcado         ...
Rails - o projeto• Configuração padrão do banco                                51
Rails - 1º CRUD• Vamos utilizar o gerador scaffold  (andaime) -   ruby script/generate scaffold project     name:string de...
Rails - 1º CRUD• Saída do scaffold  exists app/models/  exists app/controllers/  exists app/helpers/  create app/views/pro...
Rails - 1º CRUD• Vamos terminar a criação do modelo• Execute os comandos: - rake db:create:all - rake db:migrate          ...
Rails - 1º CRUD• Saída do db:migrate[tulios] ~ exemplo/bug_tracking rake db:migrate(in /Users/tulios/Documents/SEA/Palestr...
Rails - 1º CRUD• Acesse - http://localhost:3000/projects                                    56
Rails - 1º CRUD• O que fizemos? - db:migrate evoluiu o banco de dados,    aplicando a migrate criada                       ...
Rails - 1º CRUD• Analisando a migration criada  20091018202745_create_projects.rb      Data        Tipo    Alvo2009/10/18 ...
Rails - 1º CRUD• Código da migration                        59
Rails - 1º CRUD• Código do modelo As colunas do banco serão injetadas como atributos pelo Active Record                   ...
Rails - 1º CRUD• Active Record• Vejamos alguns métodos herdados - save - find(id) - find(:all) / (:first) / (:last)   •   Par...
Rails - 1º CRUD• Active Record• Mais métodos... - update_attributes(hash) - destroy - find_by_sql(string)                  ...
Rails - 1º CRUD• Active Record• Dinamic finders - find_all - find_all_by_name(name) - find_all_by_name_and_age(name, age) - et...
Rails - 1º CRUD• Vamos testar => ruby script/console[tulios] ~ exemplo/bug_tracking ruby script/consoleLoading development...
Rails - 1º CRUD• Código do controlador (index)                                  65
Rails - 1º CRUD• Index no formato xml• http://localhost:3000/projects.xml                                       66
Rails - 1º CRUD• Código do controlador (show)Params é um hash do Rails que possuitodos os atributos do request. :id é oide...
Rails - 1º CRUD• Código do controlador (new/edit)                                     68
Rails - 1º CRUD• Código do controlador (create)                                   69
Rails - 1º CRUD• O flash é um hash que é apagado na próxima requisição, por isso ele é muito útil em guardar mensagens de s...
Rails - 1º CRUD• Código do controlador (update)                                   71
Rails - 1º CRUD• Código do controlador (destroy)                                    72
Rails - 1º CRUD• Configuração das rotas                          73
Rails - 1º CRUD• Views              Nesse caso temos um              layout para o              controlador projects,     ...
Rails - 1º CRUD• projects.html.erb                        75
Rails - 1º CRUD• Onde ficam os css e javascripts?             stylesheet_link_tag facilita             o acesso aos arquivo...
Rails - 1º CRUD• index.html.erb<% para executar algum comando e <%= paraescapar algum valor                               ...
Rails - 1º CRUD• Método helper H  Não permite a execução do html armazenado• Caso contrário                               ...
Rails - 1º CRUD• Resultado - Com -   Sem                         79
Rails - 1º CRUD• Vamos incrementar o modelo• Vamos utilizar: - validates_• O que vamos validar: - nome será obrigatório, m...
Rails - 1º CRUD• Novo código do modelo                          81
Rails - 1º CRUD• Resultado                       82
Rails - 1º CRUD• Outros métodos validates_                              83
Rails - 1º CRUD• Validação personalizada                            84
Rails• Relacionamentos entre tabelas - 1 para 1                                  85
Rails• Relacionamentos entre tabelas - 1 para N                                  86
Rails• Relacionamentos entre tabelas - N para N                                  87
Rails - 2º CRUD• Um Projeto possui vários Bugs - ruby script/generate scaffold bug    project:belongs_to description:text ...
Rails - 2º CRUD• Vamos validar, para que project  não seja nulo                                    89
Rails - 2º CRUD• Aplicando as mudanças - rake db:migrate [tulios] ~ exemplo/bug_tracking rake db:migrate (in /Users/tulios...
Rails - 2º CRUD• Um projeto poderá ter vários bugs                                      91
Rails - 2º CRUD• Vamos criar rotas relacionadas - config/routes.rb - A rota direta para bug foi removida http://localhost:3...
Rails - 2º CRUDO• Podemos pedir para o rake informar todas as rotas -   rake routes                              93
Rails - 2º CRUD• Vamos adicionar o link de novo  bug em projeto -   project/show.html.erb                                 ...
Rails - 2º CRUD• Vamos corrigir bug/new.html.erb                                    95
Rails - 2º CRUD• bugs_path não existe, devemos corrigir o link voltar também                                  96
Rails - 2º CRUD• Vamos ajustar a criação - Método create                            97
Rails - 2º CRUD• Resultado - http://localhost:3000/projects/5 - http://localhost:3000/projects/5/bugs/new                 ...
Rails - 2º CRUD• Vamos apenas melhorar a apresentação -   projects/show.html.erb                              99
Rails - 2º CRUD• Configurar a página principal - apague public/index.html - mapeamento no config/routes.rb                  ...
Que aprender mais?http://www.pragprog.comhttp://www.urubatan.com.br                             101
102
P&Rhttp://github.com/tulioshttp://twitter.com/tuliosornelas.tulio@gmail.com
Próximos SlideShares
Carregando em…5
×

RoR na prática

684 visualizações

Publicada em

Publicada em: Tecnologia
0 comentários
1 gostou
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
684
No SlideShare
0
A partir de incorporações
0
Número de incorporações
5
Ações
Compartilhamentos
0
Downloads
39
Comentários
0
Gostaram
1
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

RoR na prática

  1. 1. Ruby on Rails na práticaTúlio Ornelas
  2. 2. 2
  3. 3. Agenda• Sobre o Ruby• Como instalar• Algumas estruturas da linguagem• Sobre o Rails• Como instalar• Algumas Características do framework• Primeiro CRUD• Associações• Segundo CRUD 3
  4. 4. Um pouco sobre Ruby• Criada em 1993 por Yukihiro Matz• Linguagem interpretada• “Tipagem” dinâmica• Orientada a objetos• Livre• http://www.ruby-lang.org/ 4
  5. 5. Um pouco sobre Ruby• Instalando - Linux: sudo apt-get install ruby - Windows: One-Click-Installer • http://rubyinstaller.org/download.html - Mac OS X: sudo port install ruby• Testando a instalação - ruby -v [tulios] ~ ruby -v ruby 1.8.7 (2009-06-08 patchlevel 173) [universal-darwin10.0] - irb -v irb 0.9.5(05/04/13) [tulios] ~ irb -v 5
  6. 6. Um pouco sobre Ruby• Interpretando um comando - Interactive Ruby Shell (IRB) [tulios] ~ irb >> puts "Oi" Oi• Interpretando um arquivo - <nome>.rb [tulios] ~ ruby file.rb 6
  7. 7. Um pouco sobre Ruby• Em Ruby tudo é OO [tulios] ~ irb >> 12.class => Fixnum >> true.class => TrueClass >> nil.class => NilClass >> "Tulio".class => String 7
  8. 8. Um pouco sobre Ruby• Booleans - As únicas coisas falsas são nil e false [tulios] ~ irb >> if 0 >> if 12 >> puts >> puts "verdadeiro!" "verdadeiro!" >> end >> end verdadeiro! verdadeiro! >> if nil >> if false >> puts "falso!" >> puts "falso!" >> end >> end 8
  9. 9. Um pouco sobre Ruby• Variáveis - Local user - De instância @user - De classe @@user - Globais $user• Variáveis de classe são comparadas a atributos estáticos (static) em Java. 9
  10. 10. Um pouco sobre Ruby• Criando uma classe - Em Ruby Em Java 10
  11. 11. Um pouco sobre Ruby• Criando um objeto - Ruby - Java• Note a sintaxe simplificada, não é necessário declarar o tipo da variável. 11
  12. 12. Um pouco sobre Ruby• Criando uma classe com método - Ruby Java 12
  13. 13. Um pouco sobre Ruby• Utilizando a classe no IRB - Importar a classe: require [tulios] ~ irb >> require user => true >> user = User.new => #<User:0x1011cae60> >> user.ola => "oi!" 13
  14. 14. Um pouco sobre Ruby• Utilizando construtores - Ruby Java 14
  15. 15. Um pouco sobre Ruby• Analisando - Não é necessário definir o tipo de retorno - Não é necessário utilizar parênteses (). 15
  16. 16. Um pouco sobre Ruby• Construtor e “sobrecarga” do construtor 16
  17. 17. Um pouco sobre Ruby• Métodos - De instância - Da classe 17
  18. 18. Um pouco sobre Ruby • Vamos praticar![tulios] ~ irb>> require user=> true>> user = User.new "Tulio"=> #<User:0x101238410 @nome="Tulio">>> user.equals? "Karina"=> false>> User.compare "Tulio", "Renan"=> false 18
  19. 19. Um pouco sobre Ruby • Todo atributo em Ruby é privado!?> user.nomeNoMethodError: undefined method `nome for #<User:0x101238410 @nome="Tulio"> from (irb):6 19
  20. 20. Um pouco sobre Ruby• Métodos de acesso as variáveis 20
  21. 21. Um pouco sobre Ruby• Vamos testar! [tulios] ~ irb >> require user => true >> user = User.new => #<User:0x1012394a0 @nome=""> >> user.nome = "Tulio" => "Tulio" >> user.nome => "Tulio" 21
  22. 22. Um pouco sobre Ruby• Como criar o get e o set “na mão”? [tulios] ~ irb >> require user => true >> user = User.new => #<User:0x1012394a0 @nome=""> >> user.nome = "Tulio" => "Tulio" >> user.nome => "Tulio" 22
  23. 23. Um pouco sobre Ruby• Modificadores de acesso - Privados e protegidos - Públicos • Modificador padrão, não é necessário explicitar (Também podemos utilizar a palavra public) 23
  24. 24. Um pouco sobre Ruby• Utilizando a classe em outro .rb - Importar a classe: require 24
  25. 25. Um pouco sobre Ruby• Herança 25
  26. 26. Um pouco sobre Ruby • Testando[tulios] ~ irb>> require user=> true>> user = User.new "123456"=> #<User:0x101230bc0 @idade=0,@senha="123456", @nome="Vazio">>> user.nome=> "Vazio">> user.idade=> 0>> user.idade = 10=> 10>> user.adulto?=> false 26
  27. 27. Um pouco sobre Ruby• Testando a herança [tulios] ~ irb >> require user => true >> Person.superclass => Object >> User.superclass => Person >> User.superclass.superclass => Object 27
  28. 28. Um pouco sobre Ruby• Loops - for 28
  29. 29. Exercício• Imprimir os números impares até 10 29
  30. 30. Exercício• Solução 30
  31. 31. Um pouco sobre Ruby• Outros Loops - while 31
  32. 32. Um pouco sobre Ruby• Outros Loops - iteradores 32
  33. 33. Um pouco sobre Ruby• Outros Loops - métodos da classe Fixnum 33
  34. 34. Um pouco sobre Ruby• Array e Hash 34
  35. 35. Um pouco sobre Ruby• Exceções 35
  36. 36. Um pouco sobre Ruby• Classes abertas [tulios] ~ irb >> require arquivo => true >> 1.impar? => true >> 3.par? => false >> 4.par? => true 36
  37. 37. Quer aprender mais?http://www.pragprog.com 37
  38. 38. O que é o Rails?• Meta-framework MVC• Desenvolvido em linguagem Ruby• Baseado em convenções• http://guias.rubyonrails.pro.br/ 38
  39. 39. Rails• Lançado em julho de 2004• Criado por David Heinemeir Hansson• Conceitos - DRY (Don’t Repeat Yourself) - Convention over Configuration 39
  40. 40. Rails - composição• O Rails é a junção de 5 frameworks - Active Record (ORM) - Action Pack (MVC) - Action Mailer - Active Support - Active Resource - Action WebServices (1.2.6) 40
  41. 41. Rails - instalando• O Rails é uma RubyGem• Uma gem é código ruby empacotado [tulios] ~ gem -v 1.3.6 41
  42. 42. Rails - instalando• gem install rails• Vamos utilizar o SQLite3 - gem install sqlite3-ruby (driver) 42
  43. 43. Rails - instalando• Verificando a instalação[tulios] ~ gem list [tulios] ~ rails -v Rails 2.3.5*** LOCAL GEMS *** [tulios] ~ sqlite3 --versionactionmailer (2.3.5, 2.3.3, 2.3.2, 2.2.2, 1.3.6) 3.6.12actionpack (2.3.5, 2.3.3, 2.3.2, 2.2.2, 1.13.6)actionwebservice (1.2.6)activerecord (2.3.5, 2.3.3, 2.3.2, 2.2.2, 1.15.6)activeresource (2.3.5, 2.3.3, 2.3.2, 2.2.2)activesupport (2.3.5, 2.3.3, 2.3.2, 2.2.2, 1.4.4)rack (1.0.0)rails (2.3.5, 2.3.3, 2.3.2, 2.2.2, 1.2.6)rake (0.8.7, 0.8.3)sqlite3-ruby (1.2.5, 1.2.4) 43
  44. 44. Rails - criando o projeto• Abra o terminal e utilize o comando: - rails <nome do projeto> [tulios] ~ rails bug_tracking create create app/controllers create app/helpers create app/models create app/views/layouts ...• O Rails irá gerar o arcabouço de um projeto MVC 44
  45. 45. Rails - criando o projeto• Vamos subir o servidor - ruby script/server [tulios] ~/exemplo/bug_tracking ruby script/server => Booting Mongrel => Rails 2.3.4 application starting on http://0.0.0.0:3000 => Call with -d to detach => Ctrl-C to shutdown server - Acessar a URL http://localhost:3000 45
  46. 46. Rails - criando o projeto• Página de início 46
  47. 47. Rails - o projeto• Analisaremos apenas o diretório APP, por enquanto Controllers - Controladores da aplicação Models - Os modelos do seu domínio Views - As telas Helpers - Classes de ajuda 47
  48. 48. Rails - scripts• Generate - Cria uma estrutura básica para o modelo• Server - Inicia o servidor da aplicação• Modo de usar: - ruby script/generate <parâmetros> - ruby script/server <parâmetros> 48
  49. 49. Rake• Semelhante ao make do C/C++ ou Ant do Java• “A simple ruby build program with capabilities similar to make.” [tulios] ~ rake --version rake, version 0.8.7 49
  50. 50. Rails - o projeto• Configuração padrão do banco - O banco padrão é o SQLite3, que é um banco de dados embarcado 50
  51. 51. Rails - o projeto• Configuração padrão do banco 51
  52. 52. Rails - 1º CRUD• Vamos utilizar o gerador scaffold (andaime) - ruby script/generate scaffold project name:string description:text owner:string - Os atributos do modelo são passados no script 52
  53. 53. Rails - 1º CRUD• Saída do scaffold exists app/models/ exists app/controllers/ exists app/helpers/ create app/views/projects exists app/views/layouts/ ... create db/migrate create db/migrate/20091018202745_create_projects.rb 53
  54. 54. Rails - 1º CRUD• Vamos terminar a criação do modelo• Execute os comandos: - rake db:create:all - rake db:migrate 54
  55. 55. Rails - 1º CRUD• Saída do db:migrate[tulios] ~ exemplo/bug_tracking rake db:migrate(in /Users/tulios/Documents/SEA/Palestras/Rails/exemplo/bug_tracking)== CreateProjects: migrating ==============================-- create_table(:projects) -> 0.0016s== CreateProjects: migrated (0.0017s) =======================Migrations (migrações) são uma forma deevoluir o schema do banco de dados 55
  56. 56. Rails - 1º CRUD• Acesse - http://localhost:3000/projects 56
  57. 57. Rails - 1º CRUD• O que fizemos? - db:migrate evoluiu o banco de dados, aplicando a migrate criada 57
  58. 58. Rails - 1º CRUD• Analisando a migration criada 20091018202745_create_projects.rb Data Tipo Alvo2009/10/18 20:27:45 58
  59. 59. Rails - 1º CRUD• Código da migration 59
  60. 60. Rails - 1º CRUD• Código do modelo As colunas do banco serão injetadas como atributos pelo Active Record 60
  61. 61. Rails - 1º CRUD• Active Record• Vejamos alguns métodos herdados - save - find(id) - find(:all) / (:first) / (:last) • Parâmetros opcionais: :conditions, :join, :order, :limit, :offset, :select, :readonly, :from, :group, :lock ... 61
  62. 62. Rails - 1º CRUD• Active Record• Mais métodos... - update_attributes(hash) - destroy - find_by_sql(string) 62
  63. 63. Rails - 1º CRUD• Active Record• Dinamic finders - find_all - find_all_by_name(name) - find_all_by_name_and_age(name, age) - etc 63
  64. 64. Rails - 1º CRUD• Vamos testar => ruby script/console[tulios] ~ exemplo/bug_tracking ruby script/consoleLoading development environment (Rails 2.3.4)>> Project.all=> [#<Project id: 1, name: "Nome do projeto", description: "A descrição do projeto",owner: "Dono do projeto", created_at: "2009-10-18 22:09:45",updated_at: "2009-10-18 22:09:45">]>> Project.find_all_by_name("Nome do projeto")=> [#<Project id: 1, name: "Nome do projeto", description: "A descrição do projeto",owner: "Dono do projeto", created_at: "2009-10-18 22:09:45",updated_at: "2009-10-18 22:09:45">]>> Project.count=> 1 64
  65. 65. Rails - 1º CRUD• Código do controlador (index) 65
  66. 66. Rails - 1º CRUD• Index no formato xml• http://localhost:3000/projects.xml 66
  67. 67. Rails - 1º CRUD• Código do controlador (show)Params é um hash do Rails que possuitodos os atributos do request. :id é oidentificador do atributo id 67
  68. 68. Rails - 1º CRUD• Código do controlador (new/edit) 68
  69. 69. Rails - 1º CRUD• Código do controlador (create) 69
  70. 70. Rails - 1º CRUD• O flash é um hash que é apagado na próxima requisição, por isso ele é muito útil em guardar mensagens de sucesso, erro, etc. 70
  71. 71. Rails - 1º CRUD• Código do controlador (update) 71
  72. 72. Rails - 1º CRUD• Código do controlador (destroy) 72
  73. 73. Rails - 1º CRUD• Configuração das rotas 73
  74. 74. Rails - 1º CRUD• Views Nesse caso temos um layout para o controlador projects, mas poderiamos ter apenas um layout para aplicação toda. application.html.erb 74
  75. 75. Rails - 1º CRUD• projects.html.erb 75
  76. 76. Rails - 1º CRUD• Onde ficam os css e javascripts? stylesheet_link_tag facilita o acesso aos arquivos css :defaults carrega todos os arquivos javascript padrão do Rails 76
  77. 77. Rails - 1º CRUD• index.html.erb<% para executar algum comando e <%= paraescapar algum valor 77
  78. 78. Rails - 1º CRUD• Método helper H Não permite a execução do html armazenado• Caso contrário 78
  79. 79. Rails - 1º CRUD• Resultado - Com - Sem 79
  80. 80. Rails - 1º CRUD• Vamos incrementar o modelo• Vamos utilizar: - validates_• O que vamos validar: - nome será obrigatório, maior que 5 e menor que 50 - responsável será obrigatório 80
  81. 81. Rails - 1º CRUD• Novo código do modelo 81
  82. 82. Rails - 1º CRUD• Resultado 82
  83. 83. Rails - 1º CRUD• Outros métodos validates_ 83
  84. 84. Rails - 1º CRUD• Validação personalizada 84
  85. 85. Rails• Relacionamentos entre tabelas - 1 para 1 85
  86. 86. Rails• Relacionamentos entre tabelas - 1 para N 86
  87. 87. Rails• Relacionamentos entre tabelas - N para N 87
  88. 88. Rails - 2º CRUD• Um Projeto possui vários Bugs - ruby script/generate scaffold bug project:belongs_to description:text 88
  89. 89. Rails - 2º CRUD• Vamos validar, para que project não seja nulo 89
  90. 90. Rails - 2º CRUD• Aplicando as mudanças - rake db:migrate [tulios] ~ exemplo/bug_tracking rake db:migrate (in /Users/tulios/Documents/SEA/Palestras/Rails/exemplo/bug_tracking) == CreateBugs: migrating =============================== -- create_table(:bugs) -> 0.0018s == CreateBugs: migrated (0.0020s) ======================== 90
  91. 91. Rails - 2º CRUD• Um projeto poderá ter vários bugs 91
  92. 92. Rails - 2º CRUD• Vamos criar rotas relacionadas - config/routes.rb - A rota direta para bug foi removida http://localhost:3000/projects/5/bugs/new 92
  93. 93. Rails - 2º CRUDO• Podemos pedir para o rake informar todas as rotas - rake routes 93
  94. 94. Rails - 2º CRUD• Vamos adicionar o link de novo bug em projeto - project/show.html.erb 94
  95. 95. Rails - 2º CRUD• Vamos corrigir bug/new.html.erb 95
  96. 96. Rails - 2º CRUD• bugs_path não existe, devemos corrigir o link voltar também 96
  97. 97. Rails - 2º CRUD• Vamos ajustar a criação - Método create 97
  98. 98. Rails - 2º CRUD• Resultado - http://localhost:3000/projects/5 - http://localhost:3000/projects/5/bugs/new 98
  99. 99. Rails - 2º CRUD• Vamos apenas melhorar a apresentação - projects/show.html.erb 99
  100. 100. Rails - 2º CRUD• Configurar a página principal - apague public/index.html - mapeamento no config/routes.rb 100
  101. 101. Que aprender mais?http://www.pragprog.comhttp://www.urubatan.com.br 101
  102. 102. 102
  103. 103. P&Rhttp://github.com/tulioshttp://twitter.com/tuliosornelas.tulio@gmail.com

×