Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails RubyonRails计算_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails RubyonRails计算

Ruby on rails RubyonRails计算,ruby-on-rails,ruby,Ruby On Rails,Ruby,一般来说,我对Rails和编码都是新手,我正试图通过开发一个交付驱动程序的应用程序来自学。我有一个名为loads的表格,其中包括毛重、皮重和净重列。按照目前的方式,驾驶员必须手动输入所有3个重量。我正在尝试找出让应用程序计算净重(从毛重中减去皮重)并将其添加到净列的最佳方法。这将减少司机犯一个简单的数学错误。我正在使用MySQL,有人能给我指出正确的方向吗?为什么要将这种逻辑保留在数据库中?你可以把它放在模型里 假设您有一个负载模型 只需添加以下方法 def net_weight gross

一般来说,我对Rails和编码都是新手,我正试图通过开发一个交付驱动程序的应用程序来自学。我有一个名为loads的表格,其中包括毛重、皮重和净重列。按照目前的方式,驾驶员必须手动输入所有3个重量。我正在尝试找出让应用程序计算净重(从毛重中减去皮重)并将其添加到净列的最佳方法。这将减少司机犯一个简单的数学错误。我正在使用MySQL,有人能给我指出正确的方向吗?

为什么要将这种逻辑保留在数据库中?你可以把它放在模型里

假设您有一个负载模型

只需添加以下方法

def net_weight
  gross_weight - tare_weight
end

为什么要将这种逻辑保存在数据库中?你可以把它放在模型里

假设您有一个负载模型

只需添加以下方法

def net_weight
  gross_weight - tare_weight
end

我还想问,为什么必须将其存储在数据库中。如果您确实希望存储它,请执行以下操作:


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

我还想问您为什么必须将其存储在数据库中。如果您确实希望存储它,请执行以下操作:


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

我会在验证之前向模型添加一个
回调,让我们计算缺少的值。大概是这样的:

# in your model
before_validation :calculate_net_weight

private
def calculate_net_weight
  self.net_weight = gross_weight - tare_weight
end

顺便说一句,我认为将这三个值都存储在数据库中是有意义的,即使您可以从其他两个值中计算一个值。但是,将这三个值都放在数据库中可能有助于解决问题,或者可能使计算或统计更容易。

在验证之前,我会在模型中添加一个
回调,让我们来计算缺少的值。大概是这样的:

# in your model
before_validation :calculate_net_weight

private
def calculate_net_weight
  self.net_weight = gross_weight - tare_weight
end

顺便说一句,我认为将这三个值都存储在数据库中是有意义的,即使您可以从其他两个值中计算一个值。但是,将这三个值都保存在数据库中可能有助于解决问题,或者可能使计算或统计更容易。

如果我听起来像个白痴,请原谅我,但我认为保存每个负载的数据会很有用,如果我们想运行上周、上个月甚至一年的报告/发票或其他内容。或者我每次都会用这个方法计算吗?我不知道为什么我的问题会得到否定的分数。我已经试着研究了一段时间,但没有找到任何东西。也许我对这一点太陌生了,以至于我不知道如何搜索我正在寻找的东西,或者如何提出正确的问题,但是一个小小的方向会有所帮助,我认为这是一个互相帮助的社区。。。在没有反馈的情况下看到所有负面标记有点令人沮丧。假设将来出于某种原因,您的逻辑发生了变化或增加了一层复杂性,此函数使您比仅存储数据更具灵活性:)至于否决票,主要是因为您没有提供太多代码/数据库洞察。下次复制您的模型和db/schema.rb:)如果我听起来像个白痴,请原谅我,但我认为保存每次加载的数据会很有用,如果我们想运行上周、上个月甚至一年的报告/发票或其他内容。或者我每次都会用这个方法计算吗?我不知道为什么我的问题会得到否定的分数。我已经试着研究了一段时间,但没有找到任何东西。也许我对这一点太陌生了,以至于我不知道如何搜索我正在寻找的东西,或者如何提出正确的问题,但是一个小小的方向会有所帮助,我认为这是一个互相帮助的社区。。。在没有反馈的情况下看到所有负面标记有点令人沮丧。假设将来出于某种原因,您的逻辑发生了变化或增加了一层复杂性,此函数使您比仅存储数据更具灵活性:)至于否决票,主要是因为您没有提供太多代码/数据库洞察。下次复制您的模型和db/schema.rb:)谢谢您的回复。为什么我必须将其存储在数据库中?哈哈,因为我可能不知道更多。我只是想,如果我以后需要访问这些数据,最好是将其存储到“为什么”。在我看来,您应该将其存储在数据库中,因为它是在记录更新时存储(在数据库中)的一个计算,而不是每次在渲染中为每个记录计算它。ruby/rails已经足够慢了,视图中没有不必要的计算。存储这一点是因为“ruby/rails已经足够慢了”是一个典型的过早优化案例-将此值存储在db中确实会产生较少的计算,但是,如果您更新了其他权重,您还必须“记住”更新它-当然,您可以使用before_save来执行此操作,但这更多是代码。最好的代码是您不必编写的代码;-)。因此,除非您有实际的性能问题,否则我将坚持使用Alexandre提出的临时解决方案,同时感谢Axel的回复。为什么我必须将其存储在数据库中?哈哈,因为我可能不知道更多。我只是想,如果我以后需要访问这些数据,最好是将其存储到“为什么”。在我看来,您应该将其存储在数据库中,因为它是在记录更新时存储(在数据库中)的一个计算,而不是每次在渲染中为每个记录计算它。ruby/rails已经足够慢了,视图中没有不必要的计算。存储这一点是因为“ruby/rails已经足够慢了”是一个典型的过早优化案例-将此值存储在db中确实会产生较少的计算,但是,如果您更新了其他权重,您还必须“记住”更新它-当然,您可以使用before_save来执行此操作,但这更多是代码。最好的代码是on