活动记录嵌套地图

时间:2015-02-21 02:32:21

标签: ruby activerecord rails-activerecord

Flatten不起作用,因为它返回一个数组。

我想收集活动内所有组织内所有办公室内的所有办公桌。

desks = Event.FOO.scheduled_organizations.FOO.offices.FOO.desks

我尝试使用where子句来确保我只抓住了已安排的组织,但我仍然找回了1个阵列。我需要递归地扁平化。我该怎么做?

2 个答案:

答案 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)