What a time saver
We have a project that has a few associations starting with user.
The User has many project and projects has many stopwatches.
We were working on a clean solution that would allow a user to directly edit a stopwatch.
However, we wanted to make sure that the user only edits his or her stopwatches.
So rather than passing a hidden field with the project_id, or using a virtual atribute to save the updated data for the stopwatch, we found a great plugin that allows you to bunny hop over associations.
The Nested Has many Through plugin lets you do:
@stopwatch = current_user.stopwatches.find(params[:id])
This is absolutely fantastic because in reality the association is:
current_user.projects.stopwatches
So basically, the plugin does the work of finding and loading the project to you can go directly to the current_user's stopwatch.
Brilliant.
Now, that being said, we might just port the site to MongoDB so that the stopwatches are an array on the project document, but the plugin is still very cool nonetheless.
*Note: if you are using rails 2.3x, use the 2.3 branch of the plugin.