Flatten不起作用,因为它返回一个数组。
我想收集活动内所有组织内所有办公室内的所有办公桌。
desks = Event.FOO.scheduled_organizations.FOO.offices.FOO.desks
我尝试使用where子句来确保我只抓住了已安排的组织,但我仍然找回了1个阵列。我需要递归地扁平化。我该怎么做?
答案 0 :(得分:0)
为什么不分几步完成?每个步骤都会为您提供搜索下一个的ID。我不认为你不能按照自己想要的方式去做。也许使用像squeel这样的东西。
答案 1 :(得分:0)
所以事件 - > scheduled_organizations - >办公室 - >书桌
只要您在事件中将树指定为“穿透”,如下所示:
has_many :scheduled_organizations
has_many :offices, through: scheduled_organizations
has_many :desks, through: :offices
如果在这种情况下对您不起作用,可以使用
desks = @event.scheduled_organizations.map(&:offices).map(&:desks)