Hi Guys, I''m trying to come up with a model layout for a simple enough race prediction app but am a little stuck. Basically, the app will allow users to enter their predictions for a number of races (20 races in total). When the races have been finished, I want to determine who predicted all of the race winners correctly, who got 19/20, who got 18/20 etc. Here''s a summary of the players and their relationships: A User has one Betslip. A Betslip has many Predictions (one Prediction for each of the 20 races). Each Prediction consists of one Race and one Racer (the predicted-to-win Racer). Each Race has a number of Racers. Each Race has one Winner (also a Racer). This is where I''m getting a little confused. Each Prediction consists of one Race and one Racer, but a Race also consists of a number of Racers. A Race will also have one Winner (also a Racer). It seems like there are three types of Racers - a general racer (linked to a race), a predicted-to-win racer (linked to a prediction) and a winning racer (linked to a race). Would anyone have any advice on the best way to model this? At the end of all of the races, the main thing I want to do is compare each user''s betslip against the actual winners to see how many of their predictions were correct. Many thanks, Eddie -- 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-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
Mr Horse wrote:> Hi Guys, > I''m trying to come up with a model layout for a simple enough race > prediction app but am a little stuck. Basically, the app will allow > users to enter their predictions for a number of races (20 races in > total). When the races have been finished, I want to determine who > predicted all of the race winners correctly, who got 19/20, who got > 18/20 etc. > > Here''s a summary of the players and their relationships: > > A User has one Betslip. > A Betslip has many Predictions (one Prediction for each of the 20 > races). > Each Prediction consists of one Race and one Racer (the predicted-to-win > Racer). > Each Race has a number of Racers. > Each Race has one Winner (also a Racer). >User has_one :betslip Betslip belongs_to :user Betslip has_many :predictions Prediction belongs_to :betslip Prediction has_one :race Prediction has_one :racer Race has_many :racers Race has_one :winner, :through => :racers Racers .... Are separate? Unless each racer can only participate in one race, in which case Racer belongs_to :race I think that''s basically what you''re looking for. -- 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-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
Thanks for the advice Aldric. This approach makes sense, but I get a little confused with the relationship between predictions and races. A prediction has_one race, but does this mean that a race must belong_to a prediction? While the first statement is correct (a prediction has_one race), a race has many predictions associated with it. Is it possible to state that a "race has_many predictions" as well as saying that a "prediction has_one race"? I could say that a race has_many predictions and a prediction belongs_to a race, but it makes more sense to me to think of a prediction having a race as opposed to the other way around (a prediction belonging to a race). Eddie -- 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-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
Mr Horse wrote:> Thanks for the advice Aldric. This approach makes sense, but I get a > little confused with the relationship between predictions and races. > > A prediction has_one race, but does this mean that a race must belong_to > a prediction? While the first statement is correct (a prediction has_one > race), a race has many predictions associated with it. Is it possible to > state that a "race has_many predictions" as well as saying that a > "prediction has_one race"? > > I could say that a race has_many predictions and a prediction belongs_to > a race, but it makes more sense to me to think of a prediction having a > race as opposed to the other way around (a prediction belonging to a > race). > > EddieA horse is a horse, of course of course... Oh, sorry. I was distracted. A prediction definitely doesn''t belong to a race ;-) And a race doesn''t belong_to a prediction because there''s no foreign key for prediction in the race, is there? -- 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-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
I guess my question is this: if you declare that ''a has_one b'', is it a requirement that you must also state ''b belongs_to a'' (i.e. can you have a ''has_one'' without a corresponding ''belongs_to'' ?). If this requirement holds true and I state that a prediction has_one race, then I must also state that a race belongs_to a prediction. I may be mistaken here, but this wouldn''t allow me to retrieve all of the predictions associated with a given race (and a race doesn''t really belong to a prediction). Mr. Ed :-) Aldric Giacomoni wrote:> Mr Horse wrote: >> Thanks for the advice Aldric. This approach makes sense, but I get a >> little confused with the relationship between predictions and races. >> >> A prediction has_one race, but does this mean that a race must belong_to >> a prediction? While the first statement is correct (a prediction has_one >> race), a race has many predictions associated with it. Is it possible to >> state that a "race has_many predictions" as well as saying that a >> "prediction has_one race"? >> >> I could say that a race has_many predictions and a prediction belongs_to >> a race, but it makes more sense to me to think of a prediction having a >> race as opposed to the other way around (a prediction belonging to a >> race). >> >> Eddie > > A horse is a horse, of course of course... Oh, sorry. I was distracted. > > A prediction definitely doesn''t belong to a race ;-) > And a race doesn''t belong_to a prediction because there''s no foreign key > for prediction in the race, is there?-- 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-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
On 15 March 2010 16:48, Mr Horse <lists-fsXkhYbjdPsEEoCn2XhGlw@public.gmane.org> wrote:> Thanks for the advice Aldric. This approach makes sense, but I get a > little confused with the relationship between predictions and races. > > A prediction has_one race, but does this mean that a race must belong_to > a prediction? While the first statement is correct (a prediction has_one > race), a race has many predictions associated with it. Is it possible to > state that a "race has_many predictions" as well as saying that a > "prediction has_one race"?No, as neither model would have the foreign key column, see below.> > I could say that a race has_many predictions and a prediction belongs_to > a race, but it makes more sense to me to think of a prediction having a > race as opposed to the other way around (a prediction belonging to a > race).This is the right way to do it even though prediction belongs_to race sounds a bit odd. The model that ''belongs_to'' is the one with the the foreign key (prediction has a column race_id in this case). You will find that belongs_to often does not seem quite the correct way of stating the relationship, but if the has_many seems right (race has_many predictions) and each of the predictions (in this case) is associated with one (race in this case) then that is the way to do it. Colin> > Eddie > -- > 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-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org > To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org > For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en. > >-- 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-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
Thanks Colin, I understand it a bit better now (this article also helped: http://duanesbrain.blogspot.com/2006/05/ruby-on-rails-hasone-versus-belongsto.html). The terms used in Rails to describe associations can be pretty confusing. Eddie Colin Law wrote:> On 15 March 2010 16:48, Mr Horse <lists-fsXkhYbjdPsEEoCn2XhGlw@public.gmane.org> wrote: >> Thanks for the advice Aldric. This approach makes sense, but I get a >> little confused with the relationship between predictions and races. >> >> A prediction has_one race, but does this mean that a race must belong_to >> a prediction? While the first statement is correct (a prediction has_one >> race), a race has many predictions associated with it. Is it possible to >> state that a "race has_many predictions" as well as saying that a >> "prediction has_one race"? > > No, as neither model would have the foreign key column, see below. > >> >> I could say that a race has_many predictions and a prediction belongs_to >> a race, but it makes more sense to me to think of a prediction having a >> race as opposed to the other way around (a prediction belonging to a >> race). > > This is the right way to do it even though prediction belongs_to race > sounds a bit odd. The model that ''belongs_to'' is the one with the the > foreign key (prediction has a column race_id in this case). You will > find that belongs_to often does not seem quite the correct way of > stating the relationship, but if the has_many seems right (race > has_many predictions) and each of the predictions (in this case) is > associated with one (race in this case) then that is the way to do it. > > Colin-- 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-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.