В настоящее время я работаю с Rails 5 и Postgresql. Существует модель Post, которая может иметь много комментариев через модель PostComments, так что комментарий может принадлежать одному сообщению, но это сообщение может иметь много комментариев. Я пытаюсь получить все комментарии, сгруппированные по тем, которые принадлежат определенному пользователю, а все остальные нет.
class Post < ApplicationRecord
has_many :post_comments
has_many :comments, through: :post_comments
...
class Coment < ApplicationRecord
has_many :post_comments
has_many :posts, through: :post_comments
...
В настоящее время я делаю два запроса и сравниваю, например:
foo = Comment.select(:id, :description)
bar = Comment.joins(:post).select(:id, :description).where(posts: { id: post_id })
remaining_comments = [foo - bar, foo]
Это дает мне все комментарии для конкретного магазина и все остальные, но мне было интересно, есть ли лучший способ сделать это?