所以我有一个这样的架构层次结构:
Organization > Program >RegistryPatientCount
因此RegistryPatientCount保留program_id
字段以访问Program
表。 (假设它还有一个名称列,用于类似的程序名称等。)
Program
表保留organization_id
字段以访问Organization
表。
然后在我的controller#show
方法中,我有类似的东西:
respond_to :json
def show
#TODO: Pagination.
@blah = Program.includes([:registry_patient_counts]).where(organization_id: params[:id])
respond_with(@blah)
end
*注意:ID参数是organization_id。*
当我运行它时,它返回Program
表中的数据,但我希望它返回
来自RegistryPatientCount
表的数据,下一步是能够深入到Program表中而不是program_id能够从Program表中显示Name。
但是没有任何工作,就像我说它只返回给定组织的Program表数据。
答案 0 :(得分:1)
你必须告诉respond_with
它应该包含子元素。
respond_with(@blah, include: :registry_patient_counts)
Program.includes(...)
只是告诉ActiveRecord使用一个查询获取所有数据。然后,您可以在控制器内部使用它,而无需执行额外的数据库查询。
但respond with
和render
方法独立于此。它们通常只返回层次结构的第一级。
答案 1 :(得分:-1)
在irb或Rails控制台(rails c)中,您是否可以看到是否从“RegistryPatientCount”获取数据。 然后,如果这样可以将代码插入控制器或您执行此操作的位置。 假设您有模型并且字段名为“organization_id”,我会尝试这样做:
@blah = RegistryPatientCount.where(:organization_id => params [:id])