2009/8/30 Tony <[email protected]>:
>
> 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!
>

If you have a method of Event that fetches that particular event's
summary (by calling into Stat to perform the summing query) then it
would be event.summary, which seeems intuitively correct to me.  I am
not sure what you mean by preloading, Are you trying to fetch all the
summaries for all events in one query?  The approach I suggest should
do one query for each summary when you need that summary.

By the way the convention in this list is not to top post, so that
threads are more easily followed.

Colin

> tony
>
> On Aug 30, 2:24 pm, Colin Law <[email protected]> wrote:
>> 2009/8/30 Tony <[email protected]>:
>>
>>
>>
>>
>>
>> > 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 [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to