Ruby on Rails计算

时间:2015-08-19 13:49:00

标签: ruby-on-rails ruby

我一般都是Rails和编码的新手,而且我试图通过为交付驱动程序开发应用程序来自学。我有一个称为负载的表,其中包括毛重,皮重和净重的列。目前的方式是,驾驶员必须手动输入所有3个重量。我试图找出让应用程序计算净重的最佳方法(通过从毛重中减去皮重)并将其添加到网络列中。这会减少驱动程序造成一个简单的数学错误。我使用MySQL,有人能指出我正确的方向吗?

3 个答案:

答案 0 :(得分:3)

我会向模型添加before_validation回调,让我们计算缺失值。像这样:

# in your model
before_validation :calculate_net_weight

private
def calculate_net_weight
  self.net_weight = gross_weight - tare_weight
end

顺便说一下。我认为将所有三个值存储在数据库中是有意义的,即使你可以从另外两个中计算出一个值。但是,在数据库中包含所有三个值可能有助于解决问题,或者可能使计算或统计更容易。

答案 1 :(得分:2)

为什么要在数据库中保留该逻辑?你可以简单地在模型中使用它。

假设你有一个负载模型

只需添加以下方法

>>> ???
[{
  host: "192.168.1.4",
  port: 23,
  device: 'Galil DMC-4143'
}]

答案 2 :(得分:1)

我也会问为什么你必须将它存储在数据库中。如果你确实想要存储它:

您可以创建模型的before_create lifecyle hook,以便在将值保存到数据库之前计算和设置值。