问题的简单陈述:
ActiveRecord 文档显示您可以将多个值传递给对象find()
方法,如下所示:
Person.find(1, 2, 6) # returns an array for objects with IDs in (1, 2, 6)
我的问题是返回的对象对您传入的值的顺序不敏感。
例如,Person.find(1, 2, 6)
返回与Person.find(6, 1, 2)
.
有没有办法让这种搜索顺序敏感?
感觉应该有一种方法可以传入一个数组id
并Person
以相同的顺序返回一个对象数组......
更广泛的背景,对于那些有兴趣阅读的人:
实际上,我更一般地想做的是找到Person
给定时间段内“观看次数最多”的对象。
这是我所拥有的:
@most_viewed = View.where('created_at < ?', Time.now - 1.week).group(:person_id).order('count_person_id desc').count('person_id').keys
这将返回一个(有序!)对象id
值数组,按上周收到的每个Person
对象的数量降序排列。Views
Person
我的想法是,如果我可以将这个id
s 数组传递给Person.find
方法,那么我就自由了!但也许还有另一种方法可以更轻松地完成它。我对所有想法持开放态度。
谢谢!