Rails随机数据库条目

时间:2015-02-03 11:00:20

标签: ruby-on-rails ruby

我想要一个随机的DB条目。我得到了它的工作,但我想要显示名称而不是id。这是我到目前为止所拥有的。

控制器:

@server = rand(Server.count-1)

查看:

<%= @server %>
我可能以为我能做到

<%= @server.name %>

但这给我带来了一个错误:

  

未定义的方法`name&#39; 1:Fixnum

出了什么问题?我怎么能让它运作起来?

2 个答案:

答案 0 :(得分:3)

我认为@server是ActiveRecord模型。在这种情况下,你可以做

@server = Server.order('RANDOM()').first

您编写的代码返回0和数据库中Server记录数之间的随机整数。

答案 1 :(得分:1)

我会将以下范围添加到模型中(取决于您使用的数据库):

# to model/server.rb
# 'RANDOM' works with postgresql and sqlite, whereas mysql uses 'RAND'
scope :random, -> { order('RANDOM()') } 

然后在你的控制器中得到这样的随机记录:

@server = Server.random.first
@server.name #=> returns the name of a random server