Получить отношение коллекции в рельсах - PullRequest
0 голосов
/ 10 мая 2019

Так просто, но не могу найти, как это сделать в рельсах. У меня есть определенная активная коллекция записей пользователей. Что-то вроде users = User.where(blabla). Учитывая эту коллекцию, есть ли простой способ получить все сообщения, которые есть у этих пользователей? Аналогично User.posts, только для всех пользователей в этой коллекции.

Сообщение принадлежит пользователю, Пользователь имеет много сообщений.

Спасибо!

1 Ответ

3 голосов
/ 10 мая 2019

Предполагая, что в вашей модели Post есть user_id с ассоциацией под названием "user", вы можете сделать что-то вроде этого:

Post.where(user_id: User.where(blablah))

или

Post.joins(:user).where(users: {<user conditions>})

Вы должны будете иметь возможность использовать хэш-форму для условий пользователя, чтобы использовать второй вариант. Например:

Post.joins(:user).where(users: {role: 'member'})

Если ваш запрос пользователя более сложный, вы можете создать для него область:

class User < ApplicationRecord
  scope :special, -> { where(< user conditions go here>) }
end

А затем объединить его с запросом Post:

Post.joins(:user).merge(User.special)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...