ruby-on-rails - 如何通过 ActiveRecord 中的关系显示 has_many 中的非唯一记录?
问题描述
在我的 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(通用汽车)
- 约翰·多伊(微软)
- 迈克尔迈尔斯(宝马)
(请注意,有些人可能会多次出现在列表中,因为他们可能属于多家公司。)
现在我在我的 Person 模型中有这个类方法,但是它只返回人的唯一名称,这不是我想要的:
def self.options
all.map{ |p| [ p.name, p.id ] }
end
解决方案
是的,你可以通过使用这一堆代码来做到这一点..
<% Person.includes(:companies).each do |person| %>
<% person.companies.each do |company| %>
<%= person.name %> <%= "(#{company.name})" %>
<% end %>
<% end %>
推荐阅读
- c++ - clang-format 显示将哪种样式选项应用于代码
- scala - 如何将一些捆绑包作为模块参数传递?
- jquery - 在 Ajax 内部使 Ajax 循环
- python - 没有名为“scipy.sparse._sparsetools”的模块
- excel - 如何使用java在excel中打开管道分隔的csv文件
- reactjs - React Custom Hook 产生警告:超过最大更新深度
- c - 调用 sprintf 函数
- javascript - 在 promise 解决后转到下一个 forEach 迭代
- templates - 如何在 PrestaShop 1.7.6 的子主题中添加新块?
- node.js - Typedoc 重复标识符