Great thanks, At least I know I won't spend any more time trying to fight a losing battle! :)
Will have an experiment....... On Sep 29, 7:42 pm, Matt Jones <[email protected]> wrote: > On Sep 28, 2010, at 10:49 AM, Pete wrote: > > > > > > > Hi, > > > I am currently a little confused with trying to manipulate a named > > scope that I currently have. > > I use this named scope with a table-plus, and it works very nicely, > > but I want to trim it down a little. > > > I have two associated models e.g > > > Catalogue, > > > has_many :articles > > > Article: > > > belongs_to :catalogue > > > my named scope looks like this (in Class Article) > > > :finished_articles, { :conditions => [ :finished => true ] } > > > This works fine on it's own, but I need to trim it to show only the > > most recent finished article per catalogue (based on created_at field) > > > I have tried to use two named scopes, the other looking like this: > > > :limited, { :group => "catalogue_id" } > > > which does only leave one entry per catalogue, but rather than being > > the most recent entry it is the first created. > > > I just want to be able to reverse this order, but I can't seem to > > figure out how to do this (I have a default order already set, but > > this only seems to affect the scope after it has been rendered..) Also > > setting the order does not seem to have an effect on how the instances > > are gathered from the database. > > I think you're going to have to try a different approach - at least in MySQL, > 'GROUP BY' doesn't promise anything about fields that vary amongst elements > of the group: > > http://dev.mysql.com/doc/refman/5.0/en/group-by-hidden-columns.html > > You'll probably be better off doing this in a more Rails-flavored way: > > class Catalogue > > has_many :articles > has_one :recent_article, :conditions => { :finished => true }, :order => > 'articles.created_at DESC', :class_name => 'Article' > > end > > Then you could get them all by: > > Catalogue.find(:all, :include => :recent_article) > > which will eager-load the whole bunch in one go. > > This *should* work, but I haven't tried it - and I'm not 100% sure if that > eager-loading trick will work... > > --Matt Jones- Hide quoted text - > > - Show quoted text - -- You received this message because you are subscribed to the Google Groups "Hobo Users" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/hobousers?hl=en.
