首页 > 解决方案 > 如何比较上一个条目

问题描述

我有一张消费表

  create_table "consumptions", force: :cascade do |t|
    t.float "kilometers"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
    t.integer "user_id"
  end

这是用户 1 的消费列表

 #<Consumption:0x007f8654895080     
  id: 1,
  kilometers: 10000.0,
  created_at: Wed, 07 Nov 2018 15:23:21 UTC +00:00,
  updated_at: Wed, 07 Nov 2018 15:23:21 UTC +00:00,
  user_id: 1>,
 #<Consumption:0x007f865489c268
  id: 4,
  kilometers: 10800.0,
  created_at: Wed, 24 Oct 2018 14:30:23 UTC +00:00,
  updated_at: Thu, 08 Nov 2018 12:35:37 UTC +00:00,
  user_id: 1>,
 #<Consumption:0x007f8654893f50
  id: 6,
  kilometers: 11400.0,
  created_at: Thu, 08 Nov 2018 11:56:52 UTC +00:00,
  updated_at: Thu, 08 Nov 2018 12:36:42 UTC +00:00,
  user_id: 1>,

我想比较一下每次消耗的公里数差异...

consumptions

id |   km  | 
1  | 10000 | 
4  | 10800 | 
6  | 11400 | 

id 1 和 4 之间的结果应该是 800

4 到 6 之间的结果应该是 600

标签: ruby-on-railsruby

解决方案


我建议你看看https://github.com/geokit/geokit-rails 你只需要添加acts_as_mappable到你的模型中(决定你是配置默认值还是将它们放在你的模型中,我认为最好的是在配置文件上做的)。

然后你只需使用 by_distance方法,你的代码就会看起来很不错:)


推荐阅读