我尝试使用inject构建数组。我希望consents
是ParticipantConsent
个对象的数组。
每个ParticipantConsent
对象都可以:have_many
ParticipantConsentSample
个对象。
我希望sc
包含与ParticipantConsentSample
相关联的每个ParticipantConsent
对象关联的Participant
个对象数组。
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
的内容。我哪里错了?感谢。
答案 0 :(得分:3)
尝试以下方法:
sample_consents = consents.inject([]) do |sc, c|
sc << ParticipantConsentSample.where(participant_consent_id: c.id).to_a
sc
end
答案 1 :(得分:3)
由于您只需要从ParticipantConsentSample获取的数组数组,因此您不需要inject
,您需要map
:
sample_consents = consents.map do |c|
ParticipantConsentSample.where(:participant_consent_id => c.id).all
end
答案 2 :(得分:2)
如果您希望sample_consents
成为数组,则需要使用inject
的参数将其初始化为:
sample_consents = consents.inject([]) { |sc, c| ... }