2012-02-09 13 views
1

私は、データベースから3つのランダムなアイテムを取得する必要がありますが、私はこのクエリを持っている:Railsの3 - ActiveRecordの+ MySQLとRANDOM機能

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機能に問題がありますか?

答えて

3

ActiveRecordにはrandメソッドがありません。 ruby Kernalクラスが提供するrandメソッドを使用しています。

rand(num)ルビを使用すると、0とその数値の間の乱数を見つけることができます。

はあなたが

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

OK行うことができます3つのランダムなレコードを取得するには、ありがとうございました。.. – user984621

関連する問題