mysql - Rails 3 - ActiveRecord + MySQL 和 RANDOM 函数

标签 mysql ruby-on-rails-3 activerecord random model

我需要从数据库中获取 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/

相关文章:

mysql - 无需密码访问mysql,以操作系统root身份运行

仅两个 TIME 之间的 MySQL TIMEDIFF(不是 DATETIME)

ruby-on-rails - 无法批量分配 protected 属性 : user

ruby - Rails 在迁移之间共享代码(又名关注点)

ruby-on-rails - 通过rails has_many删除记录:through

ruby-on-rails - 使用 `where` 语句查找关联计数的最佳语法是什么

MySQL 5.7 - 使用 ON DUPLICATE KEY 时,回滚时死锁,但提交时不死锁

php - MySQL TIMEstamp 到天、小时

ruby-on-rails-3 - 使用 Rails 3 的 gmail smtp

jquery - 使用 JQuery-File-Upload 和 Paperclip 时出现多个文件上传错误