如何随机选择表格中的行?
我的表格示例:
name age
Lars 24
Grete 56
Hans 56
我想随机选择一个名字。
示例:
@randomname = Model.where(:name 'Random')
我如何每天只挑选一个随机名称。我可以在视图中用作即时变量。
答案 0 :(得分:4)
@randomname = Model.order('rand()').limit(1).first.name
答案 1 :(得分:3)
Rails 3中的随机列只是:
Model.columns.sample.name
答案 2 :(得分:1)
如果你想每天获得随机对象1,那么你应该将它存储在某个地方。你可以存储它:
让我们实现最后一个。这很容易。想象一下,您Model
调用了User
。首先,让我们添加新的日期字段rndm
:
rails g migration add_rndm_to_user rndm:date
rake db:migrate
现在我们需要为您的User
模型添加一些方法
class User < ActiveRecord::Base
def self.random
rndm = find_by_rndm Date.today
unless rndm
update_all :rndm => nil
rndm = self.order('rand()').first
rndm.update_attribute :rndm, Date.today
end
rndm
end
end
现在您可以从控制器中调用User.random
答案 3 :(得分:0)
我有一些Rails 2代码显示了我认为的想法,并且很容易转换为rails 3:
random_monsters = self.find(:all, :conditions=>["level > 0 and level < ? and monster_type='monster'", user_level+2])
random_monster = random_monsters[rand(random_monsters.length)]
我也看到SO中有人建议采用偏移方式:
offset = rand(Model.count)
rand_record = Model.first(:offset => offset)