In my opinion names are pretty vital that you get right. It will help make things obvious, and that i discover the logic gets into the best spots if you have a obvious idea in regards to what the abstractions are and what they're known as.

I'm also developing in Ruby, even though I've got a really strong test suite, altering one title takes some time, so I'd rather a minimum of try to understand it properly.

The issue: Listed here are 3 model concepts, but I'm not sure exactly what the best names could be on their behalf.

  1. Customers can make courses or learning programs. This can be a template of the items a training course includes, but it is not really a course itself. Does which make sense? It consists of all the details that might be inside a course... in the same manner a category consists of all of the data/techniques to have an object. It's such as the "meta" of the course. The very best names I'm able to develop are LearningProgram or CourseTemplate

  2. Companies/education facilities can make courses. These courses derive from web site in point 1. They are REAL courses - i.e. there is a real date and real people really registerOrtake part inside them. I suppose the very best title I'm able to show up with this is Course. It points to one of the models in point 1.

  3. People may take take courses, however they get their own copy from the course that only is applicable for them, therefore we require a model to accommodate all the specific information relating to that particular course. It's essentially a Many-to-many associations with Course in point 2. The very best names I'm able to develop is ActiveCourse, CourseInstance, CourseProgress, CourseParticipant

I'm not liking my names whatsoever. Can someone assist me to develop 3 better names?

Nice question. What about CourseDescription, CourseOffering and CourseEnrolement?

Rationale:

(3) can be a relation "Person is signed up for Course" (while you noted).

(2) is another relation: "Course emerges by Organisation".

hth.