У меня есть три таблицы, подобные этой:
messages
user_id | message
2 | 'foo'
3 | 'bar'
blacklists
user_id | blacklister_id
1 | 2
users
id | name
1 | 'me'
2 | 'blacklister'
3 | 'my friend'
Я - пользователь с id: 1 от пользователей таблицы.Я не хочу видеть сообщения пользователей, которые я добавил в черный список (я добавил пользователя с id: 2 в черный список).Как я могу отображать сообщения без сообщений от пользователей черного списка (с user_id: 2) в одном запросе?
Теперь я делаю это так в Rails:
@all_messages = Message.all
@filter_messages = Array.new
for message in @all_messages
@blacklist = Blacklist.where("user_id = ? and blacklister_id = ?",current_user.id,message.user_id).first
if @blacklist.nil?
@messages << message
end
end
return @messages
Это действительно ужаснои я хочу знать, как я могу реорганизовать это с помощью одного запроса postgresql.