gpt4 book ai didi

ruby-on-rails - Ruby on Rails 执行选择的更好方法

转载 作者:太空宇宙 更新时间:2023-11-03 16:43:54 24 4
gpt4 key购买 nike

我有这样的代码来只获取用户喜欢的产品。

@products = current_user.products.select {|product| product.count_favourited > 0 }

如果用户有大量产品,此代码将使用大量内存。问题是,我无法对查询执行过滤,因为喜欢该产品的用户数量存储在 Redis 上。

有点像

def count_favourited
$redis.scard("some_key_based_on_product_id")
end

还有其他方法可以实现吗?

如何使用 find_each 以便在内部使用批处理?

@products = []
current_user.products.find_each do |product|
@products << product if product.count_favourited > 0
end

最佳答案

关于:

current_user.products.where("products.count_favourited > 0")

或使用作用域:

class Product < ActiveRecord::Base 
scope :favourited, -> { where("count_favourited > 0") }
end

current_user.products.favourited

我是不是遗漏了什么,还是就是这么简单?

关于ruby-on-rails - Ruby on Rails 执行选择的更好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38584955/

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