Thanks for the quick response! I'm not familiar with the named scopes. Will these work with preloading the records (I assume by using (:include => [:stats])? I could end up with a ton of Events on one page and I'd prefer not to have to fetch the summary for every one. I also assume I'd reference it by doing event.stats.summary? That seems a lot cleaner. I'll go dig into this a bit. Thanks!
tony On Aug 30, 2:24 pm, Colin Law <clan...@googlemail.com> wrote: > 2009/8/30 Tony <tony.cassan...@gmail.com>: > > > > > > > So I'd like to set up the below associations. An Event is a normal AR > > model. Stat is a normal AR model. I want a special stat on Event > > that is a DB computation (mostly just sums of each column) and a > > summary of all the Stats for that Event. The Summary isn't persisted > > and is marked as readonly. Unfortunately, preloading is important in > > this case (and thus why I went off on the group_by tangent, sorry if > > that wasn't clear). > > > I guess I could make a new model for Summary referencing the stats > > table which uses a special select and always adds the group by clause, > > however, that seemed like overkill. I really didn't want to run a > > loop over the returned stats since the DB can give me exactly what I'm > > looking for on the initial query. > > > Ok, here's a slightly abridged version of what I thought might work: > > > Event: > > has_many :stats > > has_one :summary_stat, :select => "sum(people) as > > people, ...", :class_name => 'Stat', :foreign_key => > > 'event_id', :readonly => true > > > Stat: > > belongs_to :event > > > Adding "group" to the has_one solves the issue, but am I going about > > this in the "right" way? Thanks for the input! > > > tony > > I don't think I would go about it this way. Using Event has_one > summary_stat suggests that somewhere there is a model SummaryStat that > belongs_to event. > An alternative would be to define an appropriate named scope in Stat > that provides the summed stats using the single query and provide a > read only attribute of Event that calls it and provides the answer. > > Colin --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk@googlegroups.com To unsubscribe from this group, send email to rubyonrails-talk+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---