Rails-запрос для поиска других лайков в зависимости от категории - PullRequest
1 голос
/ 17 июня 2010

Мне нужно сделать что-то вроде следующего:

Найдите другие категории людей, которые вам нравятся, на основе категорий, которые вам нравятся. У меня есть таблица лайков, в которую входят пользователи и категории.

Мне нужно сделать эффективный запрос, чтобы выяснить, что нравится другим категориям людей, которым понравилась данная категория.

Любые мысли по этому поводу будут оценены. Заранее спасибо.

1 Ответ

0 голосов
/ 17 июня 2010

Вы хотите найти всех пользователей, у которых есть все категории, которые есть у текущего пользователя, а затем собрать все категории, которые есть у других, за исключением категорий, которые есть у текущего пользователя.

Как насчет этого:

@user_group =  User.find(:select => "count(likes) as count, users.*", 
                          :joins => :likes,
                          :conditions => {:likes => {:category_id => current_user.categories.map(&:category_id).flatten}}
                          :group => "#{('users.id having count = ?', current_user.categories.count)}")
@categories = Categories.find(:joins => :likes, :conditions => ['likes.user_id in ? and id not in ?', @user_group.map(&:id), current_user.categories.map(&:id)]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...