Capítulo 11

Calculations

"Ao examinarmos os erros de um homem conhecemos o seu caráter"

Nesse capítulo, você aprenderá a utilizar campos para calcular fórmulas como, por exemplo, a média de um campo.

11.1 - Métodos

Uma vez que existem os campos valor gasto e nota, seria interessante disponibilizar para os visitantes do site a média de cada um desses campos para determinado restaurante.

Em Rails esse recurso é chamado calculations, métodos dos nossos modelos que fazem operações mais comuns com campos numéricos como, por exemplo:

11.2 - Média

Supondo que o cliente pediu para adicionar a nota média de um restaurante na tela com as informações do mesmo (show). Basta adicionar uma chamada ao método average das qualificações do nosso restaurante:

<b>Nota média: </b><%= @restaurante.qualificacoes.average(:nota) %><br/>

Podemos mostrar também o número total de qualificações que determinado restaurante possui:

<b>Qualificações: </b><%= @restaurante.qualificacoes.count %><br/>

E, por último, fica fácil adicionar o valor médio gasto pelos clientes que visitam tal restaurante:

<b>Preço médio: </b><%= @restaurante.qualificacoes.average(:valor_gasto) %><br/>

Seus livros de tecnologia parecem do século passado?

Conheça a Casa do Código, uma nova editora, com autores de destaque no mercado, foco em ebooks (PDF, epub, mobi), preços imbatíveis e assuntos atuais.
Com a curadoria da Caelum e excelentes autores, é uma abordagem diferente para livros de tecnologia no Brasil. Conheça os títulos e a nova proposta, você vai gostar.

Casa do Código, livros para o programador.

11.3 - Exercícios

  1. Altere a view show de restaurante para mostrar sua nota média, quantas qualificações possui e preço médio:

    1. Insira as seguintes linhas em app/views/restaurantes/show.html.erb:
      <b>Nota média: </b>
        <%= @restaurante.qualificacoes.average(:nota) %><br/>
      <b>Qualificações: </b>
        <%= @restaurante.qualificacoes.count %><br/>
      <b>Preço médio: </b>
        <%= @restaurante.qualificacoes.average(:valor_gasto) %><br/><br/>
      
      erb-restaurante-estatisticas.png
    2. Entre no link http://localhost:3000/restaurantes e escolha um restaurante para ver suas estatísticas.