Ruby on rails 如何在rails中获取随机记录?

Ruby on rails 如何在rails中获取随机记录?,ruby-on-rails,ruby,Ruby On Rails,Ruby,我试图在rails中获取一条随机记录,以便在我的主页中呈现 我有一个带有内容和标题属性的帖子模型。假设出于某种原因,我想随机获取一个postcontent和title,那么我如何在ruby中实现它呢。提前感谢。在您的post controller中 def创建 @post=post.newparams[:post] 如果你想要一些随机的标题和内容 title_length=80选择您自己的 内容长度=140选择您自己的 @post.title=0…title_length.map{65+rand

我试图在rails中获取一条随机记录,以便在我的主页中呈现


我有一个带有内容和标题属性的帖子模型。假设出于某种原因,我想随机获取一个postcontent和title,那么我如何在ruby中实现它呢。提前感谢。

在您的post controller中

def创建 @post=post.newparams[:post] 如果你想要一些随机的标题和内容 title_length=80选择您自己的 内容长度=140选择您自己的 @post.title=0…title_length.map{65+rand26.chr}.join @post.content=0…content_length.map{65+rand26.chr}.join 终止 如果@post.save 将_重定向到@post 其他的 呈现“新” 终止 终止
要在post控制器中生成随机字符串

def创建 @post=post.newparams[:post] 如果你想要一些随机的标题和内容 title_length=80选择您自己的 内容长度=140选择您自己的 @post.title=0…title_length.map{65+rand26.chr}.join @post.content=0…content_length.map{65+rand26.chr}.join 终止 如果@post.save 将_重定向到@post 其他的 呈现“新” 终止 终止
要生成随机字符串

,您可能会发现这个gem很方便:

它允许生成具有某种意义的随机字符串

例如,名称:

Faker::Name.name => “Bob Hope”
或者一封电子邮件

Faker::Internet.email
除了这个gem,如果您希望能够非常轻松地生成模拟模型,我推荐gem


它允许您为模型创建工厂,因此您可以快速生成具有随机属性的模型。

您可能会发现这个gem非常方便:

它允许生成具有某种意义的随机字符串

例如,名称:

Faker::Name.name => “Bob Hope”
或者一封电子邮件

Faker::Internet.email
除了这个gem,如果您希望能够非常轻松地生成模拟模型,我推荐gem


它允许您为模型创建工厂,因此您可以快速生成具有随机属性的模型。

不幸的是,没有与数据库无关的方法来获取随机记录,因此ActiveRecord不实现任何

对于postgresql,您可以使用:

Post.order( 'RANDOM()' ).first
随机获取一篇文章

此外,我通常会为此创建一个范围:

class Post < ActiveRecord::Base
  scope :random_order, ->{ order 'RANDOM()' }
end

因此,如果更改RDBMS,只需更改作用域。

不幸的是,没有与数据库无关的方法来获取随机记录,因此ActiveRecord不实现任何功能

对于postgresql,您可以使用:

Post.order( 'RANDOM()' ).first
随机获取一篇文章

此外,我通常会为此创建一个范围:

class Post < ActiveRecord::Base
  scope :random_order, ->{ order 'RANDOM()' }
end

因此,如果您更改RDBMS,您只需更改范围。

发布另一个答案,因为第一个答案回答了一个不清楚的问题

正如@m_x所说,您可以使用RANDOM for SQL

如果您不介意加载所有数据集,也可以使用ruby:

Post.all.sample 

这将从所有帖子中随机选择一个记录。

发布另一个答案,因为第一个答案回答了一个不清楚的问题

正如@m_x所说,您可以使用RANDOM for SQL

如果您不介意加载所有数据集,也可以使用ruby:

Post.all.sample 

这将从所有帖子中随机选择一条记录。

我知道这是一个老问题,但由于没有选择答案,回答它可能对其他用户有帮助

我认为最好的方法是在Ruby中生成一个随机偏移量,并在Active Record语句中使用它,如下所示:

Thing.limit(1).offset(rand(Thing.count)).first

此解决方案还具有良好的性能和可移植性。

我知道这是一个老问题,但由于没有选择答案,回答它可能对其他用户有所帮助

我认为最好的方法是在Ruby中生成一个随机偏移量,并在Active Record语句中使用它,如下所示:

Thing.limit(1).offset(rand(Thing.count)).first

此解决方案还具有性能和可移植性。

您想从数据库中获取随机帖子,还是创建随机内容?抱歉,如果我不清楚,我想获取随机帖子,而不是创建。我编辑了您的帖子以使其更清晰。您想从数据库中获取随机帖子,还是创建随机内容?如果我不清楚,请抱歉,我想随机获取一篇文章而不是创建。我编辑了你的文章以使其更清晰。现实世界中的标题和内容通常有空格…这可能是真的,但OP没有提到。现实世界中的标题和内容通常有空格…这可能是真的,但OP并没有提到这一点。谢谢你们回复我,如果我不清楚,我很抱歉,我想随机获取一篇文章,而不是创建。如果我是正确的伪造宝石创建随机属性。我正在寻找随机获取属性,以便在视图中呈现。感谢您回复我,如果我不清楚,很抱歉,我希望获取随机发布,而不是创建。如果我是正确的伪造宝石创建随机属性。我正在寻找随机获取属性以在视图中呈现。更多关于我需要的内容。我需要更多的东西。蒂纳克斯。