I am currently building an application where part of it is an invitation / enrollment system. Currently there are "courses" and "classrooms" in the system. A "course" is thus some course, and a "classroom" is a specific instance of a course. F.ex. there might be 1 course, but 3 classroom instances of that course, having different start/end dates, slightly different/updated materials, etc. Now, an "employee" can be invited to participate in a "course", but the "employees" themselves, has to choose a specific "classroom" to enroll in. So, the employee goes to his/hers profile page, where the invitations show up. Now the employee clicks an invitation, and can then choose a specific classroom to enroll in. This should obviously create an enrollment. But, it should also get rid of the invitation, since it has been "accepted". Currently i have it set so that "employees" has many "classrooms" through "enrollments". Also, an "employee" has many "courses" through "invitations". This doesn't seem right though, since when an employee clicks some invitation, they will be taken to an enrollment page(enrollment controller), where an enrollment will be created. As the enrollment is created, the invitation should be deleted though. So right now i guess the enrollment controller should be able to create enrollments and delete invitations. This seems like bad design. I am pretty happy with the relation between classrooms and employees, but the relation between employees and invitations seems bad. How would you do it?
Ruby on rails invitation / enrollment
782 Views Asked by Kasper At
2
There are 2 best solutions below
Related Questions in RUBY-ON-RAILS
- Rails HABTM: Select everything a that a record 'has'
- Best way to make an HABTM association via console
- dynamically create an ical / ics file from a rails model
- Ruby destroy is not working? Or objects still present?
- NoMethodError: undefined method `update_average_rating' for nil:NilClass
- Select results where joined table contains records with an attribute, but without another
- Showing posts only created when boolean was true
- Ruby on rails and HAML - Print a hash with background color
- How can I monitor an endpoint's status with Ruby?
- How to create dynamic pages without form_for helper in Rails?
- Rails 4.2 jQuery loads only after refresh
- "Access Denied" - User's Permissions to S3 Bucket
- ActiveRecord, Rails 4: has_many :through with scoped conditions failure
- Rails - formatting a list of options
- Rails - Ajax do not work properly on production server
Related Questions in RUBY
- Best way to make an HABTM association via console
- undefined method `namespace' for main:Object (NoMethodError) - active record / rakefile
- Ruby destroy is not working? Or objects still present?
- Trying to set the value of an input with mechanize
- How to split the logic in a ruby game
- How can I monitor an endpoint's status with Ruby?
- Why can a private class method be explicitly invoked in Ruby?
- Rails - Ajax do not work properly on production server
- syntax error, unexpected kEND
- Carrierwave file upload with different file types
- b.javascript_dialog().exists? is not working for me in WATIR 4.0.2
- Combine two arrays of hashes
- Building a simple calculator form in Rails 4
- How do I update create route from rails 3 to 4
- Comparison of Fixnum with nil failed - palindrome program Ruby
Related Questions in INVITATION
- rails gem Devise Invitable accept view issue
- Rails - How can I set up an id as a token (pre-beta invitation application like usehipster)
- Follow BETA Inviter on Sign Up
- How to send customized app invitations to new users with the Dec 22 platform updates?
- Can I tell an iOS Gamecenter automatch from an explicit invitation?
- Facebook app invite immediately deleted from notifications
- tracking invite application facebook
- Facebook send application invite to random user in my Friends list
- Xcode - Game Center - accepted Multiplayer Invitation not Processing
- Rails Beta invitations - Overriding Devise Registration Controller
- Best practices: how to implement an invitation system in Zend Framework?
- Working with meeting invitations in the Inbox
- In Pinax, how to invite when ACCOUNT_OPEN_SIGNUP = False?
- handleInviteFromGameCenter handling for turn based game (iOS6)
- Ruby on rails invitation / enrollment
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
Why don't you use simply a
statusattribute in your model to managed the invitation procedure?I'll use the following models:
Employee, the user of the app;Course, the course to be followed;Classroom, belonging to aCourse(a course having manyclassrooms).Participation, making the link between the employee, the course and the classroom. This model would have a status depending on the evolution of the participation to the course:invitedwhen the employee has been invited,enrolledwhen the employee has chosen a classroom, etc.A skeleton of the
Participationmodel would be:With a uniqueness requirement for the employee given the course and the classroom. And may be only for course itself without considering the classroom depending on your choice.
I'll add a unique index on
Participationstable:At the invitation the participation instance would be created (status
invited) with the correspondingemployee_idand thecourse_id,classroom_idbeing left empty. At the enrollement, the participation would be updated with theclassroom_idand statusenrolled.Does it fit your needs?