假设我有一个非空数组ids
of Thing
对象 ID,我想使用查找相应的对象things = Thing.find_all_by_id(ids)
。我的印象是things
不一定有类似于的顺序ids
.
我的印象正确吗?
如果是这样,我可以用什么来代替find_all_by_id
保留顺序并且不会不必要地多次访问数据库?
- Yes
- Use 数组#排序 http://www.ruby-doc.org/core-1.9.3/Array.html#method-i-sort
一探究竟:
Thing.where(:id => ids).sort! {|a, b| ids.index(a.id) <=> ids.index(b.id)}
where(:id => ids)
将使用生成一个查询IN()
。然后排序!方法将迭代查询结果并比较 ids 数组中 id 的位置。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)