如何在红宝石上为每个父母担任有限的职位

时间:2018-06-20 12:09:21

标签: ruby-on-rails ruby

我有两个具有has_many关系的模型,例如

company.rb

class Company < ApplicationRecord
   has_many :posts, dependent: :destroy
end

post.rb

class Post < ApplicationRecord
   belongs_to :company
end

现在我正在尝试获得这样的结果

Abc (公司包含100多个帖子)

  • 无限战争
  • 迷宫赛跑者

Xyz (公司包含100多个帖子)

  • 宝座游戏
  • 电线

因此,需要对概念进行查询,以获取每个公司的两个子记录,而不是全部。

我已经尝试过

Post.order(id: :desc).group_by(&:company)

它已加载按公司分组的所有帖子,然后页面速度变慢。

如果我这样尝试

posts = Post.order(view_count: :desc).limit(20)
@posts = posts.group_by(&:company)

正在招聘20个职位,但并非所有公司都如此。

我不知道这足以让您理解。

我现在该怎么办。

1 个答案:

答案 0 :(得分:0)

如果要这样显示:

Company A
- Post A 
- Post B

Company B
- Post C
- Post D

首先获得公司列表:

@companies = Company.all #You can add condition to take only those companies you want to show

@companies.each do |company|
  #print company name
  company.posts.order("view_count DESC").limit(2).each do |post|
    #print post.title
  end
end