1

所以我有一个这样的架构层次结构:

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_id 将能够从程序表中显示名称.

但是没有任何效果,就像我说的那样,它只是返回给定组织的 Program 表的数据。

4

2 回答 2

1

您必须告诉respond_with它应该包含子元素。

respond_with(@blah, include: :registry_patient_counts)

只是告诉 ActiveRecord用Program.includes(...)一个查询来获取所有数据。然后,您可以在控制器内部使用它,而无需进行额外的数据库查询。

但是respond withandrender方法与此无关。它们通常只返回层次结构的第一级。

于 2013-02-28T20:26:01.813 回答
-1

在 irb 或 Rails 控制台(rails c)中,您能否查看是否从“RegistryPatientCount”获取数据。然后,如果可行,请将代码插入控制器或执行此操作的位置。假设你有模型和名为“organization_id”的字段,我会试试这个:

@blah = RegistryPatientCount.where(:organization_id => params[:id])

于 2013-02-28T20:30:59.370 回答