我正在尝试通过数组中的索引使用ActiveRecord选择对象集合。
我知道我可以选择Item.first或Item.last或single或range。但我想通过它们在数组中的位置索引来更新任意组。
collection = Item.all.to_a
collection[3,5,9,11]
这可能吗?
提前致谢...
- 编辑 -
感谢tokland的帮助,我能够让它完美无缺。
如果其他人想要做类似的事情,我就是这样做的:
yesterday = Time.now - 1.day
i = Item.all
new_items = i.values_at(1,3,5,10,11,14,18)
new_items.each{ |e| e.update_attributes(:published_at => yesterday) }
答案 0 :(得分:7)
如果您的意思是数组中的索引(不是ID):
collection.values_at(3, 5, 9, 11)
答案 1 :(得分:1)
如果我理解正确,你需要
Item.find([3,5,9,11])
这是给定id的记录的方法。但是如果存在一些不存在的id,它会抛出异常。
Item.find_all_by_id([3,5,9,11])
即使某些ID不存在,这也会有效。