The purpose of this app is to demonstrate how to handle revising an associated model along with a parent model.
>> c = Company.create => #<Company id: 24, created_at: "2008-06-26 23:29:10", updated_at: "2008-06-26 23:29:10", revisable_original_id: nil, revisable_branched_from_id: nil, revisable_number: 1, revisable_name: nil, revisable_type: nil, revisable_current_at: nil, revisable_revised_at: nil, revisable_deleted_at: nil, revisable_is_current: true> >> [c, c.revisions].flatten.map {|x| x.phones.size} => [0] >> c.phones.create => #<Phone id: 23, created_at: "2008-06-26 23:29:26", updated_at: "2008-06-26 23:29:26", revisable_original_id: nil, revisable_branched_from_id: nil, revisable_number: 1, revisable_name: nil, revisable_type: nil, revisable_current_at: nil, revisable_revised_at: nil, revisable_deleted_at: nil, revisable_is_current: true> >> [c, c.revisions].flatten.map {|x| x.phones.size} => [1, 0] >> c.phones.create => #<Phone id: 24, created_at: "2008-06-26 23:29:34", updated_at: "2008-06-26 23:29:34", revisable_original_id: nil, revisable_branched_from_id: nil, revisable_number: 1, revisable_name: nil, revisable_type: nil, revisable_current_at: nil, revisable_revised_at: nil, revisable_deleted_at: nil, revisable_is_current: true> >> c.phones.create => #<Phone id: 26, created_at: "2008-06-26 23:29:35", updated_at: "2008-06-26 23:29:35", revisable_original_id: nil, revisable_branched_from_id: nil, revisable_number: 1, revisable_name: nil, revisable_type: nil, revisable_current_at: nil, revisable_revised_at: nil, revisable_deleted_at: nil, revisable_is_current: true> >> [c, c.revisions].flatten.map {|x| x.phones.size} => [3, 2, 1, 0] >> c.phones.first.revise! => true >> [c, c.revisions].flatten.map {|x| x.phones.size} => [3, 2, 1, 0] >> c.reload => #<Company id: 24, created_at: "2008-06-26 23:29:10", updated_at: "2008-06-26 23:29:10", revisable_original_id: nil, revisable_branched_from_id: nil, revisable_number: 5, revisable_name: nil, revisable_type: nil, revisable_current_at: nil, revisable_revised_at: nil, revisable_deleted_at: nil, revisable_is_current: true> >> [c, c.revisions].flatten.map {|x| x.phones.size} => [3, 3, 2, 1, 0]