【问题标题】:Rails 3 - ActiveRecord + MySQL and RANDOM functionRails 3 - ActiveRecord + MySQL 和 RANDOM 函数
【发布时间】:2012-02-09 22:46:29
【问题描述】:

我需要从数据库中随机获取 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 函数有什么问题?

【问题讨论】:

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


    【解决方案1】:

    ActiveRecord 没有任何 rand 方法。您正在使用 ruby​​ Kernal 类提供的 rand 方法。

    当您使用 rand(num) ruby​​ 时,在 0 和该数字之间找到一个随机数。

    要检索三个随机记录,您可以这样做

    User.joins(:user_cities).where("user_cities.city_id = ?", > @city.id).order('rand()').limit(3)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多