gpt4 book ai didi

ruby-on-rails - 按关联计数订购产品

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

类产品

has_many :sales

end

Class Sale

belongs_to :product

end

我如何获得销量最高的产品..(产品查找所有.. order by .. ventas..)?

最佳答案

您可能希望通过在产品模型中使用计数器缓存列以一石二鸟(另一只鸟是性能)。例如,假设您销售产品 X。当该销售提交到数据库时,它将运行回调以增加数据库中产品行中该产品的销售数量。当你销毁时,它会反过来减少产品的数量。

您需要在产品表中设置缓存列。在新迁移中,执行此操作:

add_column :products, :sales_count, :integer, default => 0

Product.reset_column_information

Product.all.each do |product|
Product.update_counters(product.id, :sales_count => product.sales.length
end

您还需要对产品和销售模型进行一些更改,如下所示:

class Product < ActiveRecord::Base
has_many :sales
end

class Sale < ActiveRecord::Base
belongs_to :product, :counter_cache => true
end

然后,不必加载所有的销售关联(在大型应用程序中,这将是危险的),您只需加载产品,并且您将在行本身中获得关联销售的数量,性能成本的一小部分。

希望对您有所帮助!

关于ruby-on-rails - 按关联计数订购产品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1760404/

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