ruby-on-rails - Rails/ActiveRecord - 查找 N 个随机项目

标签 ruby-on-rails ruby activerecord

我的模型中有以下基本代码来返回随机事件:

def self.random
  Event.first(:offset => rand(Event.count))
end

我想修改该函数,使其返回 N 个事件。

我知道first可以接受一个数字作为参数,即Event.first(2),但是如何将它与随机偏移量结合起来?

即像这样的东西

def self.random(n = 1)
  Event.first(n) # and offset??!!
end

如有任何帮助,我们将不胜感激!

最佳答案

这应该适用于返回 n随机记录:

def self.random(n = 1)
  Event.order("RANDOM()").limit(n)
end

limit方法实际上是由 first 调用的当你给它一个 Integer 作为第一个参数时,你也可以使用 .first(n)而不是.limit(n)如果你愿意的话。

您可能需要替换 RAND()而不是RANDOM()根据您的数据库系统,请查阅文档以了解确切的方法。

关于ruby-on-rails - Rails/ActiveRecord - 查找 N 个随机项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15801921/

相关文章:

ruby - 使用 Ruby 从命令行参数中提取文件名

ruby - 为什么 rubocop 的 Rails/FilePath cop 推荐 Rails.root.join

php - 使用 ActiveRecord 计算 id 匹配且另一列与两个值之一匹配的行数

ruby-on-rails - 将 "Like/Unlike"按钮添加到 Rails 中的帖子

ruby-on-rails - 在 Ruby on Rails 中更新记录时如何确保列的唯一性?

jquery - 通过ajax手动缓存图像?

mysql - 在 ruby​​ 脚本上使用事件记录和 mysql

activerecord - 如何使用 ruby​​ activerecord 查询选择单列

ruby-on-rails - Elasticsearch + 轮胎 + PaperClip : Nested objects

ruby-on-rails - Savon:用户未授权