为什么重复输出相同的记录ID,每次循环迭代时应该抓取一个随机记录?
count = 0
while count < 20
puts "ID: " + SomeModel.where(assoc_id: 10).order("RANDOM()").limit(1).first.id.to_s
count += 1
end
输出:
ID: 82784
ID: 82784
ID: 82784
ID: 82784
ID: 82784
我已经确保查询有足够的记录(即超过1)。在控制台中,行本身(在循环之外)每次都会返回一个新的ID,因此它与循环有关。我不理解的是什么?
答案 0 :(得分:4)
我认为这是因为 ActiveRecord缓存而发生的。您可以阅读this blog post关于与您的问题及其解决方案非常相似的内容。简而言之,他们(和你)可以利用ActiveRecords uncached method来看不到重复。