[Newbie] ActiveRecord: Calculate maximum of calculated column

Hi there,

I recently started learning Ruby on Rails. I decided to learn Rails by
programming some kind of small statistic application where I can
document the fuel consumption of my car - i.e. everytime I'm at the gas
station I log price and amount of the gas refuled and the distance
travelled since the last refuelling.

One of my models looks like this:

# start
class Refuelling < ActiveRecord::Base
  belongs_to :car

  def consumption
    liter/kilometer * 100
  end

  def liter_price
    price/liter
  end

  def type_of_tires
    if tires
      "winter tires"
    else
      "normal tires"
    end
  end
end
# end

In my view I use this like this (simplyfied):

# start
<% for r in @refuelling %>
<%=h r.created_at.to_date %>
<%=h r.kilometer %>
<%=h r.liter %>
<%=h r.price %>
<%=h r.consumption %>
<%=h r.liter_price %>
<%=h r.type_of_tires %>
<% end %>
# end

Now I want to calculate the max, min, average of this consumption
method, but I do not know how. I tried creating a method like ...

# start
def max
  maximum(consumption)
end
# end

... in my model but that did not work.

Any hints on how to accomplish this?
Thanks.

Max

Hi there,
# start
def max
maximum(consumption)
end
# end

The activerecord maximum function maps straight to a sql MAX(), so
can't work on a calculated column like this. In general, unless you
are willing to load all the corresponding ruby objects into memory and
iterate over them, pretty much the only thing you can do is write a
query that will do the whole thing database side.

You can do something like Refuelling.maximum('liter / distance') but
there's not a straightforward way of avoiding defining the calculation
in 2 places.

Fred