Specs:
- Using Ruby on Rails for the project
- Include at least one has_many relationship (User (as GM) has_many Campaigns)
- Include at least one belongs_to relationship (A Campaign belongs_to GM)
- Include at least two has_many through relationships (User has_many campaigns_as_player through Characters, Campaign has_many players (users) through Characters, User has_many Seshions through Campaigns)
- Include at least one many-to-many relationship (User has_many campaigns_as_player through Characters, Campaign has_many players (users) through Characters)
- The "through" part of the has_many through includes at least one user submittable attribute, that is to say, some attribute other than its foreign keys that can be submitted by the app's user (User has_many campaigns_as_player through Characters; Characters have their own attributes)
- Include reasonable validations for simple model objects (User, Character, Campaign all validate presence of name (or username))
- Include a class level ActiveRecord scope method (model object & class method name and URL to see the working feature (User.gms - users/gms)
- Include signup
- Include login
- Include logout
- Include third party signup/login (Google OAuth 2)
- Include nested resource show or index (campaigns/:id/seshions)
- Include nested resource "new" form (campaigns/:id/seshions/new)
- Include form display of validation errors (/signup, /users/:id/edit, etc)
Confirm:
- The application is pretty DRY
- Limited logic in controllers
- Views use helper methods if appropriate
- Views use partials if appropriate