0

我是一名 Rails 开发人员,正在从事一个需要展示不同图像集合的项目。我想实现一个算法,我想在不同的时间跨度中获取图像,例如,当前月份的 30% 图像和上个月的 20% 图像等等,然后将它们混在一起并创建一个集合,然后将其显示在网站。因此,它使我为Image模型定位created_at属性并根据创建日期获取图像。

我寻找了各种可能的解决方案。其中之一是思考狮身人面像。根据文档,您可以为属性赋予字段权重。但我的问题是我想在属性内赋予权重,即第一个月 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

但这会为每个请求获取相同的图像集。而每次提出请求时我都需要不同的图像。此外,由于单个请求多次访问我的数据库,这将使我的网站性能下降。

请指导我更好,更正确的方法来实现这一点。提前致谢。

4

0 回答 0