Fetch, for sure--I'm just unsure whether AR will use the extra data to actually populate the child objects. If only I wasn't so lazy, I'd consult the docs and/or try it out. ;-)
Definitely take your point about taking advantage of the ORM. But it seems to me that some people get fetishistic about avoiding SQL--are willing to torture AR into generating the exact SQL they want. That's fun for a bit, but there's definitely a point where AR leaves you hanging--which is why find_by_sql exists. -----Original Message----- From: rubyonrails-talk@googlegroups.com [mailto:[EMAIL PROTECTED] On Behalf Of Justin Holzer Sent: Tuesday, November 04, 2008 8:48 PM To: Ruby on Rails: Talk Subject: [Rails] Re: Using Inner/Outer join to eager fetch belongs_to associations I'm sure you could write a SQL query to fetch everything with a single query. However, one of the things I like about ORM, be it ActiveRecord, Hibernate, etc, is not writing SQL, and being able to do write the data access code in the native language (Ruby, Java, C#, etc.). Of course, it is comforting to know that you can always fall back on SQL when you need it, but most of the time, I would prefer to let the ORM generate the SQL. I was simply curious to see if it was possible to get ActiveRecord to fetch data for the base object plus some of it's associations in a single query using INNER JOINs. It appears this is not possible without either resorting to SQL queries (find_by_sql), or creating some kind of extension for ActiveRecord, in the case where you don't want to use SQL. If it ever becomes a major issue for me, I guess I'll just have to pick one of the two methods, unless of course, by that time someone has already written a plugin. Thanks for the responses. - Justin On Nov 4, 11:55 am, "Pardee, Roy" <[EMAIL PROTECTED]> wrote: > But is a plugin really required? Can't you feed something to find_by_sql > that will get you both types of objects? > > -----Original Message----- > From: rubyonrails-talk@googlegroups.com > [mailto:[EMAIL PROTECTED] On Behalf Of Frederick > Cheung > Sent: Tuesday, November 04, 2008 1:32 AM > To: Ruby on Rails: Talk > Subject: [Rails] Re: Using Inner/Outer join to eager fetch belongs_to > associations > > On Nov 4, 7:00 am, JustinHolzer<[EMAIL PROTECTED]> wrote: > > I did a bit more looking in to using a :conditions hash to force > > ActiveRecord to fall back on the Rails 2.0 method of eager fetching > > associations, and this is absolutely not what I am looking for. For > > one, the Rails 2.0 eager fetch strategy always uses OUTER JOINs, and > > it also includes a join for all associations specified as an > > :include, rather than just those that are specified in a condition. > > > I am looking for some way to essentially force ActiveRecord to > > eagerly fetch specific associations/:include's using an INNER JOIN > > in the query that is also being used to fetch the data for the base object. > > The more I think about it, the more I think that this functionality > > does not really exist in ActiveRecord, and it would have to be > > written as an extension/plugin. > > > However, since I'm pretty new to Rails, I wanted to put it to all > > the experts on this forum before throwing in the towel. > > Yup you've got it pretty much all figured out. For what it's worth, > when it was just a belongs_to/has_one, the overhead of generating the > crazy query with the joins, the database running the query, rails > doing its fancy parse thingy on the results meant that > > Foo.find 123456, :include => :bar > > was often no faster than > f = Foo.find 123456 > Bar.find 456798 > > Fred --~--~---------~--~----~------------~-------~--~----~ 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 [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---