我想选择范围从0到生成的随机数的所有数据集。
这有效:
@test = Test.where( :level => 0..4 )
这不起作用:
@test = Test.where( :level => 0..rand(4) )
如果我将 rand(4)作为范围的上限,我就不会得到任何结果。为什么?我该怎么办?
由于
编辑:对不起,我不知道rand(4)表示4不在范围内,3是最大结果。我现在解决了这个问题谢谢。
答案 0 :(得分:1)
做这样的事情..
a=Random.new
@test = Test.where(:level=>0..(x*a.rand)) # where x is the no of level .
或者这样做..
@test= Test.where (:level=>0..a.integer(x)) # where x is same as above
答案 1 :(得分:0)
rand(4)
返回0
时,您无法获得任何结果。
尝试使用Array#sample
生成1到4之间的随机数:
@test = Test.where( :level => 0..(1..4).to_a.sample )
答案 2 :(得分:-2)
如果您使用的是Ruby 1.9.3或更高版本,您可以使用内核#rand(可以接受范围)
示例:
@test = Test.where(id: 0..rand(0..4))
编辑:正如bjhaid指出的那样,它没有在查询之间进行