問題の簡単な説明:
find()
ActiveRecord のドキュメントには、次のように、オブジェクト メソッドに複数の値を渡すことができることが示されています。
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
メソッドに渡すことができれば、私は家から解放されます! しかし、もっと簡単に行う別の方法があるかもしれません。私はすべての考えにオープンです。
ありがとう!