Я бы решил это немного по-другому.В вашем классе Track
добавьте метод следующим образом:
class Track
def length
@length ||= calculate_length
end
def calculate_length
length_sql = <<-SQL
select st_length(path) as length from tracks where id=#{self.id}
SQL
Track.connection.execute(length_sql).first["length"]
end
end
Поэтому мы запоминаем длину (запомним это).Если @length
не установлено, мы вычисляем длину, в противном случае мы просто возвращаем ранее вычисленное значение.
И тогда, на ваш взгляд, вы можете просто сделать что-то вроде
<p>Track id : <%= @track.id%></p>
<p>Longueur : <%= '%.02f' % @track.length %>m</p>
<p>Longueur : <%= '%.02f' % (@track.length/1000) %>km</p>