Been playing with RoR for a few weeks, got quite far, but having a stupid moment, and a morning of googling isn''t getting me anywhere in my controller, amongst others I have @car_owners = CarOwner.find(:all, :joins => ["LEFT JOIN users ON users.id = user_id"], :conditions => ["car_ID = ?", @car.id]) in the related view I have <% for owner in @car_owners %> .. snip .. <%= link_to ''show'', :controller =>''newowner'', :action => ''show'', :id => owner.id %> <% end %> The problem is the owner.id is actually giving me the users.id as in the left join in the controller How do I access the actual car_owners.id , I''ve tried various things, but nothing is giving me the right id thanks in advance for any help --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
evamedia wrote:> Been playing with RoR for a few weeks, got quite far, but having a > stupid moment, and a morning of googling isn''t getting me anywhere > > in my controller, amongst others I have > > @car_owners = CarOwner.find(:all, :joins => ["LEFT JOIN users ON > users.id = user_id"], :conditions => ["car_ID = ?", @car.id]) > > in the related view I have > > <% for owner in @car_owners %> > > .. snip .. > > <%= link_to ''show'', :controller =>''newowner'', :action => ''show'', :id => > owner.id %> > > <% end %> > > The problem is the owner.id is actually giving me the users.id as in > the left join in the controller > > How do I access the actual car_owners.id , I''ve tried various things, > but nothing is giving me the right id > > thanks in advance for any help > > > > > >You could try adding :select => "car_owners.id as car_owner_id" And then saying link_to ... :id => owner.car_owner_id It sounds like you should be using belongs_to, as in @car_owners = CarOwner.find(:all, :include => :user, :conditions => ["car_ID = ?", @car.id]) Just guessing... Hope this helps (not to mention works :] )... Cheery-o Gustav Paul gustav-PUm+PnBUKx7YkQIYctQFYw@public.gmane.org --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
You need to set up your classes: Car has_one :owner Owner belongs_to :car Then grab car and owner info: @cars = Car.find(:all) @cars.collect { |car| car.owner } You will now have a collection of all cars with owners nested beneath each car. Use <%= debug(@cars) %> in your view to verify that this has happened. To show in the view iterate though cars and owners: <table> <% for car in @cars %> <td> <%= car.name %> </td> <td> <%= link_to ''show'', :controller =>''newowner'', :action => ''show'', :id => car.owner.id %> </td> </table> Things may get a bit funky but this should get you close enough, assuming only one owner per car. Hope this helps some! Taylor -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
On Nov 15, 2006, at 4:36 PM, Taylor Strait wrote:> > You need to set up your classes: > > Car > has_one :owner > > Owner > belongs_to :car > > > Then grab car and owner info: > > @cars = Car.find(:all) > @cars.collect { |car| car.owner }I think this was meant to be: @cars = Car.find(:all, :include => :owner) which will be a reduction in database overhead by avoiding separate queries for the owner of each car.> You will now have a collection of all cars with owners nested beneath > each car. Use <%= debug(@cars) %> in your view to verify that this > has > happened. To show in the view iterate though cars and owners: > > <table> > <% for car in @cars %> > <td> > <%= car.name %> > </td> > <td> > <%= link_to ''show'', :controller =>''newowner'', :action => ''show'', > :id => car.owner.id %> > </td> > </table> > > Things may get a bit funky but this should get you close enough, > assuming only one owner per car. Hope this helps some! > > Taylor-Rob Rob Biedenharn http://agileconsultingllc.com Rob-xa9cJyRlE0mWcWVYNo9pwxS2lgjeYSpx@public.gmane.org --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
thanks for the replys, but my models are setup as Car has_many :car_owners CarOwner belongs_to :car has_one :user as each car could of been owned by many people, but each owner is only one user (hope that makes sense) with my code, looking at the log it''s running a query "select * from car_owners left join users on users.id = user_id where (car_id = 9) if I run that on my DB I get all the rows (*) so how do I access car_owners.id --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
It seems to me that owner = user? What about this schema? Car has_many :users, :through => :ownerships, :conditions => "ended_at IS NULL" User has_many :cars, :through => :ownerships, :conditions => "ended_at IS NULL" Ownership belongs_to :car belongs_to :user Now you can do Car(id).users[0].id to get the current owner''s id. There is some trickery involved because you aren''t really using a join table so you identify the current owner as the only one who has a NULL "ended_at" ownership. (when a car is sold, ended_at is filled in) But since Rails cannot do a has_one through a M:M table you have to create an array. '':conditions => "ended_at IS NULL"'' insures that your array only has one record, so you can reference it with ''users[0].'' Does that make sense? -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---