0

これは初歩的な質問です。アクセスしようとしている関連テーブルが 3 つあります。

患者モデルには次のものがあります。

has_many :charts
has_many :providers, :through => :charts

プロバイダー モデルには次のものがあります。

has_many :charts 
has_many :patients, :through => :charts

チャートモデルには次のものがあります。

belongs_to :patient
belongs_to :provider

current_user.id をプルして、正常に動作する @provider をセットアップします。

@provider = Provider.where(:user_id => current_user.id).first    

次に、その @provider.id を使用して、必要なチャートのハッシュを作成します。これも機能します

@charts = Chart.where(:provider_id => @provider.id)

しかし、@chartsハッシュから患者のハッシュを作成しようとすると、壊れます....

@patients = Patient.where(:id => @charts.patient_id)

「未定義のメソッド `patient_id' for #」と表示されます [patient_id は charts テーブルの列の 1 つです]

私は何を間違っていますか?ヘルプ!

4

2 に答える 2

0

列にアクセスするには、次のようなことが必要になる場合があると思います。

@patients =  Patient.where(:id => @charts[:patient_id])
于 2013-05-11T23:07:41.267 に答える
0

これを試して:

@patients = Patient.where(:id => @charts.map(&:patient_id))

@charts コレクションは、そのメンバーの patient_id を自動的に収集しません。他の 2 つのクエリは、単一のレコードを操作しているため機能しますが、最後のクエリでは、2 番目のクエリから返されたコレクションを操作しています。

于 2013-05-12T00:44:06.373 に答える