## User

(from nifty authentication)

has_many :contracts

## Contract

class Contract < ActiveRecord::Base

belongs_to :user
has_many :sections

end


## Section

class Section < ActiveRecord::Base

belongs_to :contract
has_many :section_maps

after_update :save_widgets

def existing_widget_attributes=(widget_attributes)

widgets.each do |widget|
attributes = widget_attributes[widget.id.to_s]
widget.attributes = attributes
end
end

def save_widgets
widgets.each do |object|
widgets.save(false)
end
end

end

## Section Map

class SectionMap < ActiveRecord::Base

belongs_to :widget, :polymorphic => true
belongs_to :section

end

## Contact

class Contact < ActiveRecord::Base

has_one :section_map, :as => :widget

end

## Acknowledgment

class Acknowledgment < ActiveRecord::Base

has_one :section_map, :as => :widget

end