小品中的随机笑话(activerecord)

时间:2010-10-10 06:04:56

标签: ruby-on-rails activerecord ruby-on-rails-3 random

我正在使用populate.rake:

使用测试数据填充数据库
Repertoire.includes(:jokes).each do |r|
  @jokes = r.jokes
  Skit.populate 8..12 do |skit|
    skit.joke_id = @jokes[rand(@jokes.count)].id
  end
end

这给了我一个RuntimeError:被调用的id为nil。

如何使用随机笑话填充小品?

2 个答案:

答案 0 :(得分:3)

sort_by {rand}应该对你的笑话进行排序。

或者,您的“保留曲目”查询中还会执行.order("rand()/random()")(取决于您的数据库)并对查询设置限制。

答案 1 :(得分:0)

不确定这是否能解决您的问题,但Ruby对数组有rand方法,因此您应该可以调用@jokes.rand.id。似乎这会简化事情,甚至可能修复你的错误。