: 순서와 :와 함께 찾을 수는 액티브 레코드 레일 :이 같은 구조 뭔가를 그룹
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
을하지만 일반적으로 그것을 순진 방법을 수행하여 초래 쿼리의 많은 수의 컬렉션을 통해이 작업을 수행하고 피할 수있는 방법이있다 :
나는 이런 식으로 그것을 할 순진 수있어?
나는이 시도 :user.licences.find(:all, :order => 'created_at DESC', :group => 'dongle_id')
이 각 동글 하나의 라이센스를 반환 않지만, 순서에 따라 첫 번째는 'ID'에 의해 결정됩니다 하나, 하지이 나는 쿼리에 지정했습니다.
첫 번째인지 결정하기 위해 제공하는 정렬 순서를 사용하여 각 항목을 첫 번째로 제공 할 수있는 방법이 있습니까?
코드가 이미 한 것과 크게 다르지 않다하면서, 쿼리의 수를 줄일 않는이 좋은 (어쨌든 더 읽기 쉽습니다.) – Trejkaz