Hi List I have a natural key association between Release and Track (so no id foreign key relationship). I figured out how to get ActiveRecord to correctly populate the nested collections by declaring a :finder_sql on the Release side : has_many :tracks, :finder_sql => ''SELECT * FROM tracks WHERE tracks.album = "#{title}"'' Trouble is, if I wanna use an eager loader in the controller, ActiveRecord reverts back to LEFT OUTER JOINS and tries to use ids ? Release.find(:all, :include=>[:track]) I''d much prefer to have Rails do the mapping correctly so I can say : release.artist.name which I don''t get if I resort to raw SQL in the finder (I think) ? Anyone give me a few pointers ? Cheers Matt --~--~---------~--~----~------------~-------~--~----~ 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-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
http://groups.google.com/group/rubyonrails-talk/browse_thread/thread/9b51fcd727d171b0/b606a9468a274dc5 -- We develop, watch us RoR, in numbers too big to ignore. --~--~---------~--~----~------------~-------~--~----~ 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-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Hi Mark Thanks for the tip. Still feeling my way through rails so you''ll have to bear with me. First thing is ensuring I''ve correctly bound in the mod script. I placed the script under /lib and added "require ''eager_custom_sql''" to environment.rb I tried to ensure this code was getting executed by firing up script/ breakpointer and placing breakpoints at the start of each method. The code doesn''t breakpoint ? The breakpointer works fine if I just place a breakpoint in a controller.. If I DO have this mod config correctly I am still unsure if it does what I want as rails still halts complaining about a missing ID column. Seemingly not running the :finder_sql from the has_many assoc ? I couldn''t find much on the web about how to use this so perhaps I am missing something more fundamental ? Do I have to rewrite the :finder_sql to use the t0_rm syntax or must I explicitly pass in extra SQL in my finder call in the controller ? TIA Matt On Mar 26, 10:29 pm, Mark Reginald James <m...-bzGI/hKkdgQnC9Muvcwxkw@public.gmane.org> wrote:> http://groups.google.com/group/rubyonrails-talk/browse_thread/thread/... > > -- > We develop, watch us RoR, in numbers too big to ignore.--~--~---------~--~----~------------~-------~--~----~ 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-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Matt Spendlove wrote:> First thing is ensuring I''ve correctly bound in the mod script. I > placed the script under /lib and added "require ''eager_custom_sql''" to > environment.rbThat''s correct.> I tried to ensure this code was getting executed by firing up script/ > breakpointer and placing breakpoints at the start of each method. The > code doesn''t breakpoint ? The breakpointer works fine if I just place > a breakpoint in a controller.. > > If I DO have this mod config correctly I am still unsure if it does > what I want as rails still halts complaining about a missing ID > column. Seemingly not running the :finder_sql from the has_many > assoc ?Sorry, it seems some core code changes from Rails 1.1 to 1.2 made this mod no longer work. I''ve done an untested 1.2 version here: http://mrj.bpa.nu/eager_custom_sql_rails_1.2.rb> Do I have to rewrite the :finder_sql to use the t0_rm syntax or must I > explicitly pass in extra SQL in my finder call in the controller ?The former. -- We develop, watch us RoR, in numbers too big to ignore. --~--~---------~--~----~------------~-------~--~----~ 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-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
I took the hit of n + 1 in the end as, in my case, n = 8 and isn''t growing quickly. I didn''t try the code below but if anyone else has similar problems I came across this today. Again, not used it but.. <http://kellogg-assoc.com/articles/2006/11/05/eager-finder-sql> On Mar 27, 4:24 pm, Mark Reginald James <m...-bzGI/hKkdgQnC9Muvcwxkw@public.gmane.org> wrote:> MattSpendlovewrote: > > First thing is ensuring I''ve correctly bound in the mod script. I > > placed the script under /lib and added "require ''eager_custom_sql''" to > > environment.rb > > That''s correct. > > > I tried to ensure this code was getting executed by firing up script/ > > breakpointer and placing breakpoints at the start of each method. The > > code doesn''t breakpoint ? The breakpointer works fine if I just place > > a breakpoint in a controller.. > > > If I DO have this mod config correctly I am still unsure if it does > > what I want as rails still halts complaining about a missing ID > > column. Seemingly not running the :finder_sql from the has_many > > assoc ? > > Sorry, it seems some core code changes from Rails 1.1 to 1.2 > made this mod no longer work. I''ve done an untested 1.2 version here: > > http://mrj.bpa.nu/eager_custom_sql_rails_1.2.rb > > > Do I have to rewrite the :finder_sql to use the t0_rm syntax or must I > > explicitly pass in extra SQL in my finder call in the controller ? > > The former. > > -- > We develop, watch us RoR, in numbers too big to ignore.--~--~---------~--~----~------------~-------~--~----~ 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-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---