【问题标题】:Determining total number of HABTM associations through class_name通过 class_name 确定 HABTM 关联的总数
【发布时间】:2013-09-26 02:43:56
【问题描述】:

我有两个关联的模型:

class Facility < ActiveRecord::Base
  has_and_belongs_to_many :investigators, class_name: "Person"
  has_and_belongs_to_many :technicians, class_name: "Person"
end

class Person < ActiveRecord::Base
  has_and_belongs_to_many :facilities
end

如果我同时实例化调查员和技术员,我可以使用例如获取与特定设施相关联的每个人的数量

numtechs = myfacility.technicians.size
numinvests = myfacility.investigators.size 

等等。但是我如何返回与设施相关联的总人数。尝试

numpeople = myfacility.people.size

似乎不起作用。

有没有办法一举做到这一点?

谢谢。

【问题讨论】:

  • 等等!我刚刚重新阅读了我最初的帖子-第二个模型应该说'has_and_belongs_to_many:facilities'。我现在就编辑它

标签: ruby-on-rails associations has-and-belongs-to-many


【解决方案1】:

没有。 FacilityPeople 之间没有可以枚举/计数的单一关联。您已经建立了两个独立的关联,尽管只能从一侧访问。您没有提供任何方法来引用来自 People 的关联,因为在 People 中没有对 Facility 的相应 HABTM 引用。

您可以将显示的两个关联的大小相加,或者如果您担心关联中的重叠/重复,请枚举/计算唯一的 User 引用。

【讨论】:

  • 嗨,彼得。好吧,真可惜。我并不特别担心重叠。除了上面定义的两种之外,我打算将设施模型扩展到许多不同类型的人,并且将有几个场景,我想检查是否存在与该设施相关的“人”(因此希望有一种方法可以使用我通过每个中的 class_name 引用实际人员模型的事实来做到这一点)。我想我可以写一个快速帮助函数。感谢您的帮助
猜你喜欢
  • 2012-04-07
  • 2015-07-04
  • 1970-01-01
  • 1970-01-01
  • 2018-12-20
  • 2013-01-11
  • 2020-05-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多