我來自一個PHP世界,對Ruby來說很新,所以可能有更好的方法來做到這一點。用更好的代碼可以更簡潔地表達這個塊嗎?這個Ruby循環如何更有效地表達?
bands = Band.where(:type => 'Rock & Roll').only(:id)
band_ids = bands.map &:id
band_ids.each do |id|
lead_singer = LeadSinger.find(:band_id => id)
if lead_singer
lead_singer.rock_and_roll = true
lead_singer.save
end
end
這一切都感覺有點臃腫。如果沒有找到結果,我添加了「if lead_singer」部分,但如果有更好的方法去解決這個問題,我很樂意開悟。
編輯 我在Mongoid中使用MongoDB,所以連接不會成爲我的選擇。
'LeadSinger.find(Band.where(:類型=>「搖滾).pluck(: id))。update_all(:rock_and_roll => true)' – MurifoX 2012-07-11 20:16:33