:と一緒に見つける:順序とRailsはActive Recordの:私は構造を持っている。このようなグループ
class User
has_many :dongles
has_many :licences, :through => :dongles
end
class Dongle
has_many :licences
belongs_to :user
end
class Licence
belongs_to :dongle
end
をしかし、時間が経過すると、ユーザは、最終的には、各ドングルに対して複数のライセンスを取得します。合理的に、このアプリは、それぞれの最新のライセンスを要約したいと考えています。
私は単純に、このようにそれを行うことができます知っている:
user.dongles.each do |dongle|
licence = dongle.licences.find(:first, :order => 'created_at DESC')
# do something with the licence info
end
しかし、コレクションを介してこれを行うと、通常はそれを素朴な方法を実行してしまうのクエリの多数を回避する方法はありますか?
私はこの試みた:これは私がクエリで指定した順番で各ドングル用のライセンスが1つ返しますが、それが取る最初のものは、「ID」によって決定され、ないん
user.licences.find(:all, :order => 'created_at DESC', :group => 'dongle_id')
を。
最初のものを決定するために提供する並べ替え順を使用して、それぞれの最初のものを得る方法がありますか?
コードは、私がすでに持っていたものと大差ない間、それは、クエリの数を減らすんので、これは良いです(とにかく読みやすい。) – Trejkaz