Использование ассоциации моделей для: заказа находки в рельсах - PullRequest
0 голосов
/ 30 января 2011

Есть ли способ использовать ассоциацию модели внутри: order части Rails find?Например, у меня есть следующий сценарий:

User
  has_many :lists
end

#fields include: count is an int, best is a boolean and only only list has best equal true
List
  belongs_to :user      
end

Я хотел бы выполнить поиск, который упорядочит пользователей по значению подсчета в списке лучших пользователей.Я знаю, что это совершенно не работает, но, возможно, это поможет мне достичь цели:

User.find_all_by_id_and_profile(user_ids, true, :order => "user.lists.find_by_best(true).count")

Я читал об использовании: include, но я не уверен, как это применимо здесь.

1 Ответ

1 голос
/ 30 января 2011

Так что, если я правильно понимаю, вы пытаетесь упорядочить пользователей из списка лучших атрибутов их списка. Я думаю, что вы должны использовать подзапрос.

User.where("users.id IN (?) AND profile=true", user_ids).order(
 '(SELECT COUNT(*) FROM lists WHERE (best=true) AND (users.id=lists.user_id))')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...