gpt4 book ai didi

ruby-on-rails - 在 ActiveRecord 中,如何指定一个在页面持续时间内只计算一次的类属性?

转载 作者:数据小太阳 更新时间:2023-10-29 07:54:33 27 4
gpt4 key购买 nike

假设我有一个名为 Apples 的 ActiveRecord,我想要一个类方法来计算数据库中每个苹果的总价,如下所示:

def Apples.total_price
Apples.sum(:price)
end

这是我在我的一个 View 中使用的一种方法来制作饼图。所以,像这样:Apples.brand("red delicious").sum(:price)/Apples.total_price = % of pie chart

Apples.brand("fuji").sum(:price)/Apples.total_price = 饼图的另外 %

Apples.total_price 被重复调用,但此时值不会改变。 A) Rails 是否重复进行查询,或者它是否知道缓存该值?如果它确实重复调用它,那么在 Apple 中定义一个方法的最佳方法是什么,以便这个 total_price 只在这个 View 的运行时计算一次?

最佳答案

您定义它的方式,我相信它是重复完成的。日志肯定会显示。

通过一种称为内存的技术,您可以仅在需要时处理它。 Rails 为实例方法提供了简单的内存,但是对于类方法,您只能靠自己了。

以下是您如何为类方法滚动自己的内存。

class Apple < ActiveRecord::Base
cattr_reader :total_price

def Apple.total_price
@@total_price ||= Apples.sum(:price)
end
end

关于ruby-on-rails - 在 ActiveRecord 中,如何指定一个在页面持续时间内只计算一次的类属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2274674/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com