Pular para o conteúdo principal

Onde implementar um novo método ou variável?

Como sabemos, o framework  Ruby on Rails é baseado na arquitetura MVC. Desta forma, as principais pastas do projeto abaixo do nível /app são:
  • assets: onde ficam os CSS, JavaScripts e Imagens da aplicação.
  • models: onde ficam os objetos da aplicação, geralmente representam uma tabela do Banco de Dados ou um Relacionamento entre tabelas. 
    • O nome dos arquivos geralmente estão no padrão "<nome_da_tabela>.rb"
  • controllers: onde ficam as classes de controle, que permitem que os objetos (model) acessem a camada de apresentação (view). 
    • O nome dos arquivos geralmente estão no padrão "<nome_da_tabela>s_controller.rb"
    • Observe que o nome da tabela deve ser no plural.
  • views: onde ficam as páginas html da aplicação.
    • O nome dos arquivos geralmente estão no padrão "<metodo_do_controlador>".html.erb
Desta forma, o programador tem que saber onde irá criar novos métodos na aplicação, de forma que eles fiquem visíveis na camada de apresentação (View).


Quando for necessário criar um método para substituir uma coluna da tabela do Banco de Dados, onde este método poderá ser utilizado por qualquer página da aplicação, deve-se criar um método na classe do "Model", por exemplo:

#----tarefa.rb
#Custo de cada tarefa
      def custo(valor_hora)         
                return self.tempo_gasto * valor_hora
     end


Quando for necessário criar uma variável pública para ser utilizada apenas em uma página específica, esta variável deve ser criada no método específico do controlador. Geralmente esta variável é o resultado de uma consulta em várias tabelas do banco de dados:


#----projetos_controller.rb
def show
    #Tarefas do Projeto
    @versao = @projeto.versoes.find_by(projeto_id: @projeto.id) if @projeto
    @tarefas = @projeto.tarefas 


    @tarefas_da_versao = @tarefas.where(versao_id: @versao.id) if @tarefas and @versao
end




Como saber quando usar "find_by" ou "where" na consulta para uma nova variável?

  • Quando o resultado da consulta retornar apenas 1 valor, então deve-se colocar "find_by";
  • Quando o resultado da consulta retornar uma lista de objetos, então deve-se colocar "where";
Na camada de apresentação (View) estas variáveis serão usadas da seguinte forma:

 
Quando a variável retornar apenas 1 resultado, pode se usar a seguinte declaração:

#----view/projetos/show.html.erb
 <%= @versao.nome %>

Quando retornar uma lista de objetos, será necessário fazer um declaração de loop:

#----view/projetos/show.html.erb
<% if @projeto %>
    <% 
@tarefas_da_versao.each do |tarefa| %>
         <li><%= tarefa.titulo %></li>
    <% end %>

<% end %>

Quando o método for declarado no "Model", pode se usar a seguinte declaração:

 #----view/projetos/show.html.erb
<% if @projeto %>
    <%
@tarefas_da_versao.each do |tarefa| %>       
        R$ <%= tarefa.custo(50) %>   
   <% end %>
<% end %>







Comentários

Postagens mais visitadas deste blog

Ruby on Rails - Por que é tão simples?

Ruby on Rails é uma framework para construção de aplicações WEB, que utiliza a linguagem Ruby. Ruby é uma linguagem interpretada orientada a objetos, que se comporta como se fosse uma linguagem funcional. E o que isto significa, em palavras menos técnicas, significa menos linhas de código, menos configuração, menos dependência com a IDE (aplicação para compilar o código). Por isso ela é tão simples!!

O framework Ruby on Rails tem a vantagem de já definir a arquitetura da aplicação no momento da criação do projeto. Parece mágica, sim, é muito simples e rápido, com apenas um comando para criação do projeto, você já tem toda a arquitetura pronta.

A arquitetura criada pelo framework é baseada no Padrão de Projeto (Design Pattern) MVC, para quem não conhece MVC, se você não sabe do que estou falando vale a pena dar uma lida aqui (mais completo) ou se você já ouviu falar veja este vídeo abaixo:




Brincar para Aprender!

Aprendendo a usar CSS, este joguinho é bem simples e prático. Com ele dá para aprender a usar os comandos CSS-Flex para sua aplicação. Tente colocar os sapinhos em cada posição corretamente. Acesse o site: https://codepip.com/

Ruby on Rails - Mudanças entre o Rails 4 e o Rails 5

Para você que é iniciante no framework Ruby on Rails, pode ficar confuso ao ver que em diferentes tutoriais, dependendo da versão do Rails instalada, que os comandos para a criação da aplicação não serão os mesmos.

Isso porque o Rails 5 tem novos comandos que fazem a mesma coisa feita no Rails 4.

Alguns exemplos:


Após a criação de uma "migrate" é necessário gravar ela no banco de dados, então será necessário executar o comando abaixo:
Rails 4
$ rake db:migrateRails 5
$ rails db:migrate
Para atualizar as rotas da aplicação, depois que é feita alguma modificação no arquivo routes.rb, então será necessário executar o comando abaixo:
Rails 4
$ rake routesRails 5
$ rails routes
Para que não haja muita confusão para os novos programadores Rails, há uma convensão de que no Rails 5 é possível utilizar os comandos iniciando Rake ou com Rails, vai funcionar corretamente.

Se você já programa para Rails 4, os comandos que já aprendeu irão funcionar no Rails 5. Mas, se você é novo na área,…