2012-02-25 196 views
6

在Ruby on Rails中,我有许多孩子的学校。有许多活动的儿童。和有一个activity_types的Activity。我需要帮助嵌套包括。在我的孩子控制器。我有这个......这是有效的。在Ruby on Rails中嵌套包含3

s = School.find(params[:school_id]) 
@school = s 
@children = s.children.includes(:activities).all 

但我也想从儿童的活动中得到:activity_type。我想这

s = School.find(params[:school_id]) 
@school = s 
@children = s.children.includes(:activities => :activity_types).all 

但没有奏效

回答

9

不要以复数形式activity_type

s.children.includes(:activities => :activity_type).all

+0

哇谢谢你。为什么这个工作?这背后的逻辑是什么? – Johnston 2012-02-25 20:57:48

+0

我假设你在编写活动时犯了一个错字,并且有一个activity_types(复数),因为你后来写到你想从活动中获得activity_type。 'children.includes(:activities =>:activity_type)'表示包含每个孩子的所有活动,并且包括每个活动的每个activity_type。如果你使用复数(activity_types),那么假设活动有许多activity_types而不只是一个。 – James 2012-02-25 21:03:03