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の代わりにプログラムテーブルから名前を表示できるようにすることです。 。

ただし、特定の組織のプログラムテーブルのデータを返すだけであると言ったように、何も機能していません。

4

2 に答える 2

1

respond_with子要素を含める必要があることを に伝える必要があります。

respond_with(@blah, include: :registry_patient_counts)

Program.includes(...)、1 つのクエリですべてのデータを取得するように ActiveRecord に指示するだけです。その後、追加のデータベース クエリを実行することなく、コントローラー内で操作できます。

しかし、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 に答える