Looking for feedback on my little domain model

Hi there.

In my first rails app, a company can post multiple jobs (think job board).

My first instinct would be to say: class Company < ActiveRecord::Base   has_many :jobs end class Job < ActiveRecord::Base   belongs_to :company end

My question is of design: Should I use the above models, or does it make better sense to have a relation model, such as a JobPosting, that would make my code more like: class Company < ActiveRecord::Base   has_many :jobs, :through => job_postings end

I am just getting started, and I can foresee this sort of design decision arises regularly, so wanted to get some experienced feedback first.

I appreciate it. -chris

In my first rails app, a company can post multiple jobs (think job board).

My first instinct would be to say: class Company < ActiveRecord::Base has_many :jobs end class Job < ActiveRecord::Base belongs_to :company end

My question is of design: Should I use the above models, or does it make better sense to have a relation model, such as a JobPosting, that would make my code more like: class Company < ActiveRecord::Base has_many :jobs, :through => job_postings end

I am just getting started, and I can foresee this sort of design decision arises regularly, so wanted to get some experienced feedback first.

The first one. Unless you can think of something that a JobPosting would have that a Job wouldn't or for some reason want to assign the same Job to multiple Companies, but that just doesn't make any sense to me :slight_smile:

-philip

I appreciate your reply, and your reasoning makes sense to me.

There is one more case I am unsure of. Let's say I have something like this: class Job < ActiveRecord::Base   has_many :workers end class Worker < ActiveRecord::Base   belongs_to :job end

In this case, would you consider using a relational model like this? class Assignment < ActiveRecord::Base   has_many :workers   belongs_to :job end class Job < ActiveRecord::Base   has_many :assignments   has_many :workers, :through => :assignments end class Worker < ActiveRecord::Base   belongs_to :assignment end

Also, is this logical use of "has_many :through"? I have a lot to learn, but am excited.

I appreciate any guidance. -Chris

Sorry, I realized that some point won't read this unless my comments proceed (as opposed to precede) previous comments:: I appreciate your reply, and your reasoning makes sense to me.

There is one more case I am unsure of. Let's say I have something like this: class Job < ActiveRecord::Base   has_many :workers end class Worker < ActiveRecord::Base   belongs_to :job end

In this case, would you consider using a relational model like this? class Assignment < ActiveRecord::Base   has_many :workers   belongs_to :job end class Job < ActiveRecord::Base   has_many :assignments   has_many :workers, :through => :assignments end class Worker < ActiveRecord::Base   belongs_to :assignment end

Also, is this logical use of "has_many :through"? I have a lot to learn, but am excited.

I appreciate any guidance. -Chris

Josh, many thanks. Your example with the standard join table helped me to look at my models in a different and more accurate context.

BTW, I enjoy your blog. Cheers, Chris