I am BARRY HESS > Blog

Has_many_polymorphs and Checkboxes

Previously I discussed getting my feet wet with has_many_polymorphs. In that article I promised a follow-up dealing with checkboxes in a polymorphic world. As I started keying the article, I ran into a much better description of the overall issue by Dylan Fareed (I presume) at I Am Still Alive. Take a look at his has_many_polymorphs overview.

Reading Fareed’s post, the key bit of code he developed is the abstract_id_assignement method. See, when you’re working with a typical has_and_belongs_to_many Rails relationship, the collection objects get some assignment methods for free. So given:

class People < ActiveRecord::Base
  has_and_belongs_to_many :foibles

You will get a foible_ids=(id_list) method for free. Not so in the has_many_polymorphs world. A similar topic was discussed in the Rails Forum. Fareed provides a nice solution to that issue. Once the code is in place, you can pretty much DRY up your arrays of checkboxes as described by Ryan Bates’s Railscast.