gpt4 book ai didi

ruby-on-rails - 帮助将 Rails 2 数据库逻辑转换为 Rails 3.1/PostgreSQL

转载 作者:行者123 更新时间:2023-11-29 13:06:58 26 4
gpt4 key购买 nike

如何为每个用户选择一条随机记录,但按最新记录 pr 对数组进行排序。用户。

如果 Foo 上传了一幅新画,我想从 foo 中选择一个随机记录。这样上传 10 张画的用户不会独占首页的所有空间,但仍会在页面顶部获得一个位置。

这就是我在 MySQL 上运行 Rails 2.x 时的做法。

@paintings = Painting.all.reverse
first_paintings = []
@paintings.group_by(&:user_id).each do |user_id, paintings|
first_paintings << paintings[rand(paintings.size-1)]
end
@paintings = (first_paintings + (Painting.all - first_paintings).reverse).paginate(:per_page => 9, :page => params[:page])

上面的例子生成了大量的 SQL 查询,并且没有适本地优化。如果 Rails 3.1 在 PostgreSQL 上运行,您将如何实现这一目标?我有 7000 条记录..

最佳答案

@paintings = Painting.all.reverse = @paintings = Painting.order("id desc")

如果你真的想颠倒绘画结果集的顺序我会设置一个范围然后使用它

有点像

class Painting < ActiveRecord::Base  
scope :reversed, order("id desc")
end

然后你可以在任何你需要的地方使用Painting.reversed

关于ruby-on-rails - 帮助将 Rails 2 数据库逻辑转换为 Rails 3.1/PostgreSQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6976060/

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