Iam是一个Rails开发人员,他正在开发一个需要显示不同图像的集合的项目。我想实现一种算法,我希望在不同的时间范围中获取图像,例如,当前月份的30%图像和20%的图像从上个月等等,将它们一起洗牌并创建一个集合,然后在网站上显示它。因此,它使我能够为图像模型定位 created_at 属性,并根据创建日期获取图像。
我寻找各种可能的解决方案。其中一个是 Thinking Sphinx 。根据{{3}},您可以为属性提供字段权重。但我的问题是我想在属性内给予权重,即第一个月为30%,第二个月为20%。所以我没有发现它是一个很好的解决方案。
接下来我想用范围
来实现同样的目标图片模型
class Image < ActiveRecord::Base
scope :current_month, where("created_at < ? and created_at > ?", Time.now, 1.month.ago).shuffle.take(6)
scope :previous_month, where("created_at < ? and created_at > ?", 1.month.ago, 2.month.ago).shuffle.take(5)
scope :last_month, where("created_at < ? and created_at > ?", 2.month.ago, 3.month.ago).shuffle.take(4)
end
图像控制器
class ImagesController < ApplicationController
@total_images = Image.current_month + Image.previous_month + Image.last_month
end
但是这会为每个请求获取相同的图像集。每次请求时我都需要不同的图像。此外,由于单个请求多次访问我的数据库,这将使我的网站的性能真的下降。
请指导我更好,更正确的方法来实现这一点。提前谢谢。