The "Summary" object you've described doesn't sound like a proper ActiveRecord object - is it actually persisted to the database? It sounds like you'd be better off just defining a non-AR model (maybe an OpenStruct) for the summary. It's not going to help with preloading, but you didn't state if that was an issue.
--Matt Jones On Aug 28, 10:25 pm, Tony <tony.cassan...@gmail.com> wrote: > Hey all, > > I've been playing around with special relationships (specifying the > select, etc) on my models and trying to get Rails to return the > results of database computations as part of an association. I've got > one model representing an object and another model representing > statistics about that object on per day basis. That main Event object > has many Stats but it also has one Summary (of those Stats). > Unfortunately, Rails won't allow me to have a has one association with > computed columns (sums in my case) since it will not allow the use of > the group by clause without which Rails can't connect the returned > stats to the event since the event_id column is null. I've gotten > around this by using a has_many association for the stats even though > I'm grouping on the foreign key and will only ever have one record at > most. This creates some really "hacky-looking" code since I have to > read the first element of the returned array everywhere to read the > summary stats. I went digging through the Rails source to take a look > at why this might be prevented and I've come up with two thoughts: > > 1) Rails should allow use of :group for a has_one association for > specific use cases such as this one and let the programmer decide how > it works. The fix is as simple as adding it to the > valid_keys_for_has_one_association in associations.rb. However, this > lead me to a second thought... > > 2) In a has_one association it seems like it would never be > detrimental to use a group by clause on the foreign key as this would > always return one or fewer results for the parent table. This relates > to the comment at association_preload.rb:148 (in 2.3.3) which states > that there is no way to ask the database for one row per distinct > foo_id (which is what group by would do, at least in MySQL). > > Am I missing something or is this something that ought to be patched? > Thanks for the input and help! > > tony --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---