Has_many and has_one ... and nested form


I am looking at Rails 2.3.2 and how to cleanly do the following:

  • I have model User
  • User has many Plans
  • User has one Active Plan
  • New User form has fields on it to create the Active Parent

I want to create a new User with an Active Plan in one form.

At the moment I have:

class User < ActiveRecord::Base
has_one :active_plan, :class_name => ‘Plan’, :conditions =>
[‘active = ?’, true]
has_many :plans

def active_plan_attributes=(attributes)
plans.build(attributes.merge(:active => true))

So that in the form I can wrap the active plan fields in:

<% f.fields_for :active_plan, @active_plan do |ap| %>

<% end %>

The @active_plan is being set in the user controller new action atm.

Is this the cleanest approach, or is there something else I can use?
accepts_nested_attributes_for did not seem to suit to set the plan to
being active … but could be missing something on that?