gpt4 book ai didi

ruby-on-rails - ActiveRecord 中的随机记录

转载 作者:行者123 更新时间:2023-12-03 04:22:49 25 4
gpt4 key购买 nike

我需要通过 ActiveRecord 从表中获取随机记录。我按照 Jamis Buck from 2006 中的示例进行操作.

但是,我还通过 Google 搜索遇到了另一种方法(由于新的用户限制,无法使用链接进行归因):

 rand_id = rand(Model.count)
rand_record = Model.first(:conditions => ["id >= ?", rand_id])

我很好奇这里的其他人是如何做到的,或者是否有人知道什么方法会更有效。

最佳答案

rails 7

对于 MySQL:

Model.order("RAND()").limit(1)

Postgres/SQLite:

Model.order("RANDOM()").limit(1)

rails 6

正如 Jason 在评论中所述,在 Rails 6 中,non-attribute arguments不允许。您必须将该值包装在 Arel.sql() 语句中。

Model.order(Arel.sql('RANDOM()')).first

rails 5、4

Rails 45中,使用PostgresqlSQLite,使用RANDOM():

Model.order('RANDOM()').first

对于带有 RAND()MySQL 来说,大概也是同样的效果

Model.order('RAND()').first

这个 is about 2.5 timesaccepted answer 中的方法更快 .

警告:对于具有数百万条记录的大型数据集来说,这很慢,因此您可能需要添加一个 limit 子句。

关于ruby-on-rails - ActiveRecord 中的随机记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2752231/

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