Честно говоря, я даже не уверен, как описать это в одном предложении, так что название может быть далеко. Вот что я пытаюсь сделать:
У меня довольно простая модель. Пользователь -> Рассказы -> Комментарии. То есть, у пользователя есть история_мани, а у комментария есть история.
Я пытаюсь вернуть только те истории, которые:
- Есть комментарии
- Создан текущим пользователем или прокомментирован current_user
- Но не в том случае, если текущий пользователь является только пользователем, комментирующим его
То, что я имею до сих пор:
Story.includes(:comments).where("stories.user_id = ? OR comments.user_id = ?", current_user.id, current_user.id)
Но я понятия не имею, как выполнить последнее условие в SQL. Единственное, что я мог сделать, это использовать перечисляемые методы.
@stories.reject! { |story| story.comments.collect(&:user_id).all? { |user_id| user_id == current_user.id }}