summaryrefslogtreecommitdiff
path: root/_posts/2010-11-05-rails-3-has_many-through-checkboxes.html
blob: 84838a299ce152d8c2b2cf37280a0a2a51791fbe (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
---
layout: post
title: Rails 3 has_many :through checkboxes
tags:
- Development
status: publish
type: post
published: true
meta:
  _edit_last: '1'
  _wp_old_slug: ''
---
On Twitter I wrote:
<blockquote>Rails does it for you, just add sheet_ids[] to the form with the checkboxes and it's done! will blog.</blockquote>
Being a music teacher, my fiance needed to keep record of tests her students perform. Also, each test has several sheets that need mentoring and monitorization through several parameters. I decided to help and reentered the Rails world, and since I have found no answer on this topic, I decided to write it myself.

This situation is a perfect model for using the so well known <a href="http://railscasts.com/episodes/17-habtm-checkboxes">HABTM checkboxes</a>.

<!--more-->
<h3>A closer look at the problem</h3>
<h4>Models</h4>
[gist id=663287]

A pretty basic setup. The <em>venues</em> (the students' tests) include several <em>sheets</em> for them to study and for the teacher to evaluate, through <em>exhibitions</em> that have several criteria.
<h4>View</h4>
[gist id=663417]

I simplified the form just so you see what's at stake. The same principle of the HABTM checkboxes applies to a has_many :through association. Instead of new entries in a venues_sheets table, new <em>Exhibitions</em> are created with the respective foreign ids in them.

The controller needs no mention because it stays the same. It just saves / updates the model. This is why I love Rails: the hard work is done: you just need to focus on what matters.