Получить случайные записи из поля has_many в рельсах 3 - PullRequest
1 голос
/ 30 ноября 2011

У меня есть модель:

class HotelTheme < ActiveRecord::Base
  has_many :hotels
end

Я хочу получить 6 отелей, используя случайный выбор.

Я пытался:

@hotelTheme.hotels.rand(6)

Но не получается, любая идея?

Спасибо

Ответы [ 2 ]

5 голосов
/ 30 ноября 2011

Вы можете использовать следующий синтаксис:

@hotelTheme.hotels.order("RANDOM()").limit(6) #for MySQL RAND()

RANDOM() - это встроенная функция SQL, которая медленно работает с большими таблицами.

Также взгляните на случайный камень .

0 голосов
/ 30 ноября 2011

Если вы не возражаете против возврата всех hotel с, когда вам нужно только шесть, вы можете сделать

@hotelTheme.hotels.shuffle[0..5]

Но если ваш hotel_theme имеет нагрузку hotel с, это, вероятно, довольно плохая идея.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...