mrmarkham
2007-Apr-10 01:34 UTC
ActiveRecord: Pointing to two records in one table from a record in another table
I''m relatively new to Rails (well, I got involved in it last fall, but
got away from it) and am trying to figure out a reasonable way to
model the following:
team
- id
- name
game
- id
- first_team_id
- frist_team_score
- second_team_id
- second_team_score
There will be lots of other information, but I was hoping to find an
elegant way to point to two different rows in the team table (ideally
allowing ActiveRecord to help me out) from one row in the game table.
Obviously
team - has_many :games
game - has_many :teams {:limit => ''2''}
Gets me somewhat there, but I also need to know things like the scores
for each time. That way I can figure out which team won to determine
things like season records, etc.
It''s a very simplified model, but if someone has a good way to handle
that scenario, I think the rest will fall in place.
Thanks!
Andy
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---
Thorsten
2007-Apr-10 08:31 UTC
Re: ActiveRecord: Pointing to two records in one table from a record in another table
something like this: class Team < ActiveRecord::Base has_many :games_as_home, :foreign_key => "first_team_id" has_many :games_as_guest, :foreign_key => "second_team_id" end class Game < ActiveRecord::Base belongs_to :home_team, :foreign_key => "first_team_id" belongs_to :guest_team, :foreign_key => "second_team_id" end Then you can e.g. do: @team = @Team.find(params[:id] @home_games = @team.games_as_home @guest_games = @team.games_as_guest @no_of_games = @home_games.count + @guest_games.count @home_games_won = @home_games.count :conditions => "first_team_score > second_team_score" @guest_games_won = @guest_games.count, :conditions => "first_team_score < second_team_score" @tie_games = home_games.count :conditions => "first_team_score second_team_score" + @guest_games.count :conditions => "first_team_score = second_team_score" you could encapsulate some of that stuf into a Model method too, if you need to do those calculations often throughout your app. On 10 Apr., 03:34, "mrmarkham" <andy.markham.ad...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> I''m relatively new to Rails (well, I got involved in it last fall, but > got away from it) and am trying to figure out a reasonable way to > model the following: > > team > - id > - name > > game > - id > - first_team_id > - frist_team_score > - second_team_id > - second_team_score > > There will be lots of other information, but I was hoping to find an > elegant way to point to two different rows in the team table (ideally > allowing ActiveRecord to help me out) from one row in the game table. > > Obviously > team - has_many :games > game - has_many :teams {:limit => ''2''} > > Gets me somewhat there, but I also need to know things like the scores > for each time. That way I can figure out which team won to determine > things like season records, etc. > > It''s a very simplified model, but if someone has a good way to handle > that scenario, I think the rest will fall in place. > > Thanks! > Andy--~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---