如何通过ActiveRecord中的关系显示has_many中的非唯一记录?

时间:2019-07-17 18:37:31

标签: ruby-on-rails activerecord

在我的Rails应用程序中,我具有以下关系:


class Company < ApplicationRecord

  has_many :people, :through => :jobs

end

class Job < ApplicationRecord

  belongs_to :company
  belongs_to :person

end

class Person < ApplicationRecord

  has_many :companies, :through => :jobs

end

如何生成所有 (包括他们各自的公司名称)的列表,所以输出如下:

  • 埃隆·马斯克(特斯拉)
  • 麝香麝香(Space X)
  • John Doe(通用汽车)
  • John Doe(Microsoft)
  • Michael Myers(宝马)

(请注意,某些人可能属于多个公司,因此可能会在列表中多次出现。)

现在,我的Person模型中具有此类方法,但是它仅返回人的唯一名称,这不是我想要的:

def self.options
  all.map{ |p| [ p.name, p.id ] }
end

1 个答案:

答案 0 :(得分:1)

是的,您可以通过使用这些代码来实现。.

<% Person.includes(:companies).each do |person| %>
    <% person.companies.each do |company| %>
        <%= person.name %> <%= "(#{company.name})" %>
    <% end %>
<% end %>