Rails, как запросить запись на основе двух полей - PullRequest
0 голосов
/ 14 декабря 2011

У меня есть Модель друга :

user_id, friend_id, status (approved, pending, ignored)

Я хочу запросить, есть ли у пользователя 1 и пользователя 2 запись.

user1.id = 10
user2.id = 9

Модель друга можетиметь либо

10,9,x
9,10,x

Как я могу написать запрос рельсов, который будет видеть, существует ли запись, для любой комбинации?Спасибо

1 Ответ

1 голос
/ 14 декабря 2011

Как насчет:

Friend.where(:user_id => [user.id, self.id], :friend_id => [user.id, self.id], :status => 'x')

Конвертировать в SQL будет:

"ВЫБРАТЬ \" друзей \ ". * ИЗ \" друзей \ "ГДЕ \" друзей \". \" user_id \ "IN (10, 9) И \" friends \ ". \" friend_id \ "IN (10, 9) AND \" friends \ ". \" status \ "= 'x'"

Возвращает оба случая одним запросом:

[#<Friend id: 1, user_id: 10, friend_id: 9, status: 'x', created_at: "2011-06-25 15:09:00", updated_at: "2011-11-01 18:28:50">, #<Friend id: 2, user_id: 9, friend_id: 10, status: 'x', created_at: "2011-06-25 15:11:06", updated_at: "2011-11-01 18:28:50">]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...