为什么它会重复输出相同的记录 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,因此它与循环有关。我有什么不明白的?
最佳答案
我相信这是因为 ActiveRecord 缓存 的缘故。你可以阅读this blog post关于与您的问题及其解决方案非常相似的事情。简而言之,他们(和你)可以利用 ActiveRecords uncached method不要看到它重复。
关于ruby-on-rails - Ruby on Rails Active Record RANDOM() 在一个循环中总是相同的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34583074/