Ruby on rails Rails由用户共享的不同项的项提要,后跟当前用户

Ruby on rails Rails由用户共享的不同项的项提要,后跟当前用户,ruby-on-rails,activerecord,rails-postgresql,Ruby On Rails,Activerecord,Rails Postgresql,因此,我试图制作一个项目提要,其中的项目是不同的,并且每个项目都可以由许多用户共享。我的数据模型是: 用户:has_many:posting,has_many:products,:through=>:posting 产品有很多:帖子,有很多:用户,:通过:帖子 发布属于:用户,属于:产品 因此,我试图找到一个独特产品的可窗口(偏移、限制)列表,并获取用户数据(或至少一个字段),这样我就不必在视图中查询它。下面是我正在运行的查询: def feed_items(offset, limit)

因此,我试图制作一个项目提要,其中的项目是不同的,并且每个项目都可以由许多用户共享。我的数据模型是:

用户:has_many:posting,has_many:products,:through=>:posting

产品有很多:帖子,有很多:用户,:通过:帖子

发布属于:用户,属于:产品

因此,我试图找到一个独特产品的可窗口(偏移、限制)列表,并获取用户数据(或至少一个字段),这样我就不必在视图中查询它。下面是我正在运行的查询:

 def feed_items(offset, limit)
  ids = followed_users.map(&:id)
  ids.push id
  all_rows_sql = Posting.where("user_id IN (#{ids.join(',')})").order("created_at DESC").select("product_id, row_number() over (partition by product_id) as row_number").to_sql
  sql = "SELECT product_id FROM(#{all_rows_sql}) as rows where row_number = 1 OFFSET #{offset} LIMIT #{limit}"
  postings = ActiveRecord::Base.connection.execute(sql)
  product_ids = []
  postings.each {|p| product_ids.push p['product_id'].to_i}
  products = Product.find product_ids
  orderedProducts = []
  for product in products
    orderedProducts[product_ids.index(product.id)] = product
  end
  orderedProducts
end
这将在合理的时间内获得产品列表,但在我的视图中,我必须使用product.users.each来显示项目下的用户列表。这将导致大量的查询,并从视图中访问数据库,这两个都是一个问题。有人知道如何在获取产品id的同时获取用户id吗

谢谢