Hello everyone, I just read the entire Associations page on the RoR Guide, and I''m wanting to see if I can run it by the pros to make sure I have it down right for my particular project. As a first test project I''m doing a simple Issue Tracker. The tracker has the following models: Projects Tickets Milestones Components Types Severities Each Project will have many Tickets Each Ticket will have one of the following, Milestone, Component, Type, Severity From reading the RoR Association Guide I have guessed that this is the best method using Milestone as the example: Project: has_many: tickets, has_many: milestones, :through => tickets Ticket: belongs_to: project, belongs_to: milestone Milestone: has_many: tickets, has_many: projects, :through => tickets Would this be the correct associations for have a Project will have multiple tickets, and each ticket will have exactly one milestone reference? The thing that has me confused is that each project can have multiple milestone, ie: Milestone 1, Milestone 2, etc...but these milestones will be related to the Project, so in the actual table there may be 5 instances of Milestone 1 but with a different project id. I''m so lost, lol. --~--~---------~--~----~------------~-------~--~----~ 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 would ditch the :through association here and have: Milestone belongs_to :project has_many :tickets Ticket belongs_to :project belongs_to :milestone Project has_many :milestones has_many :tickets This might seem like you''re doubling up, but this best represents the real world model. A project has milestones and tickets can belong to these milestones. Tickets may also exist outside of milestones. With your initial model, you''d need to create tickets in order to create milestones - which is not correct. Hope that makes sense! Steve --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
Steve, That makes perfect sense, I''m new to this but something about the way I was looking at it didn''t seem right, didn''t realize you could do what you did, but it makes perfect sense!!! Thanks for the quick reply! On Jan 4, 3:59 pm, Steve Bartholomew <st...-LWB5c3/XHbdBDgjK7y7TUQ@public.gmane.org> wrote:> I would ditch the :through association here and have: > > Milestone > belongs_to :project > has_many :tickets > > Ticket > belongs_to :project > belongs_to :milestone > > Project > has_many :milestones > has_many :tickets > > This might seem like you''re doubling up, but this best represents the > real world model. A project has milestones and tickets can belong to > these milestones. Tickets may also exist outside of milestones. > > With your initial model, you''d need to create tickets in order to > create milestones - which is not correct. > > Hope that makes sense! > > Steve--~--~---------~--~----~------------~-------~--~----~ 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@googlegroups.com For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---