0

inject を使用して配列を構築しようとしています。consentsオブジェクトの配列になると思いParticipantConsentます。

ParticipantConsentオブジェクトはオブジェクトにでき:have_many ParticipantConsentSampleます。

に関連付けられたすべてのオブジェクトに関連付けられたオブジェクトscの配列の配列が含まれることを期待しています。ParticipantConsentSampleParticipantConsentParticipant

consents = ParticipantConsent.where(:participant_id => @participant.id).all
sample_consents = consents.inject { |sc, c| sc << ParticipantConsentSample.where(:participant_consent_id => c.id).all }

現在、 の内容consentsを確認すると の内容を取得していsample_consentsます。どこが間違っていますか?ありがとう。

4

3 に答える 3

3

以下を試してください:

sample_consents = consents.inject([]) do |sc, c| 
  sc << ParticipantConsentSample.where(participant_consent_id: c.id).to_a
  sc
end
于 2013-05-17T17:06:13.853 に答える
3

ParticipantConsentSample から取得した配列の配列が必要なだけなので、実際には必要ありませinjectmap

sample_consents = consents.map do |c|
  ParticipantConsentSample.where(:participant_consent_id => c.id).all
end
于 2013-05-17T17:37:57.337 に答える
2

配列にしたい場合はsample_consents、次の引数を使用して配列として初期化する必要がありますinject

sample_consents = consents.inject([]) { |sc, c| ... }
于 2013-05-17T17:06:05.180 に答える