我需要从数据库中获取 3 个随机项目,我有这个查询:
User.joins(:user_cities).where("user_cities.city_id = ?", > @city.id).offset(rand(User.count)).limit(3)
这生成了我:
SELECT `users`.* FROM `users` INNER JOIN `user_cities` ON `user_cities`.`user_id` = `users`.`id` WHERE (user_cities.city_id = 1) LIMIT 3 OFFSET 15
RAND
函数在哪里丢失?当我远程 OFFSET 15
时,此查询返回空集,所以我得到了大约 3 个结果,但每次都是相同的结果。
ActiveRecord 中的RAND
函数有什么问题?
最佳答案
ActiveRecord 没有任何 rand 方法。您正在使用 ruby Kernal 类提供的 rand 方法。
当您使用 rand(num) ruby 时,找到一个介于 0 和该数字之间的随机数。
要检索三个随机记录,您可以这样做
User.joins(:user_cities).where("user_cities.city_id = ?", > @city.id).order('rand()').limit(3)
关于mysql - Rails 3 - ActiveRecord + MySQL 和 RANDOM 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9220098/