在我的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
如何生成所有人 (包括他们各自的公司名称)的列表,所以输出如下:
(请注意,某些人可能属于多个公司,因此可能会在列表中多次出现。)
现在,我的Person模型中具有此类方法,但是它仅返回人的唯一名称,这不是我想要的:
def self.options
all.map{ |p| [ p.name, p.id ] }
end
答案 0 :(得分:1)
是的,您可以通过使用这些代码来实现。.
<% Person.includes(:companies).each do |person| %>
<% person.companies.each do |company| %>
<%= person.name %> <%= "(#{company.name})" %>
<% end %>
<% end %>