我来自一个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