Considering the Rails 3 app with the following models:
class Order < ActiveRecord::Base
belongs_to :user
has_many :multipage_pdfs, :as => :assetable, :dependent => :destroy
has_many :singlepage_pdfs, :as => :assetable, :dependent => :destroy
...
end
class Asset < ActiveRecord::Base
...
end
class SinglepagePdf < Asset
...
end
the asset of # version is incremented every time a new asset is created, if an object with the same name exists, so my assets usually look (simplified):
| id | assetable_id | assetable_type | name | version | type |
| 1 | 1 | Order | my.pdf | 1 | SinglepagePdf |
| 2 | 1 | Order | my.pdf | 2 | SinglepagePdf |
| 3 | 1 | Order | my.pdf | 3 | SinglepagePdf |
| 4 | 1 | Order | bla.pdf | 1 | SinglepagePdf |
Now I need to get all singlepage_pdfs of the same order, but only the latest version for each name. How can i achieve this?
o = Order.find(1)
singlepage_pdfs = o.singlepage_pdfs.find(...)
3 4...