我想要一个随机的DB条目。我得到了它的工作,但我想要显示名称而不是id。这是我到目前为止所拥有的。
控制器:
@server = rand(Server.count-1)
查看:
<%= @server %>
我可能以为我能做到
<%= @server.name %>
但这给我带来了一个错误:
未定义的方法`name&#39; 1:Fixnum
出了什么问题?我怎么能让它运作起来?
答案 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