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/