You could check if both the company and user are valid, and if so create them.
@company = Company.new (...) @user = User.new (...) if (@company.valid? and @user.valid?) @company.save @user.save ) Dave On Sat, Jul 31, 2010 at 7:20 AM, Magnus Holm <judo...@gmail.com> wrote: > Hey campers, > > I'm wondering if any of you know a better solution to skylerrichter's > problem: http://github.com/camping/camping/issues#issue/28 > > The basic idea is that he want to create a Company, and then the first > User in that Company: > > @company = Company.create( > :name => @input.name, > :sub_domain => @input.subdomain) > > # Create the first user: > @user = User.create( > :company_id => @company.id, > :first_name => @input.first_name, > :last_name => @input.last_name, > :email => @input.email, > :password => @input.password) > > Both Company and User has validations, so there's a possibility that > they don't actually get saved to the DB, and in that case he don't want > *any* of them to be saved (I assume). I was thinking about something like > this: > > begin > Company.transaction do > @company = Company.create!( > :name => @input.name, > :sub_domain => @input.subdomain) > > @user = User.create!( > :company_id => @company.id, > :first_name => @input.first_name, > :last_name => @input.last_name, > :email => @input.email, > :password => @input.password) > end > rescue > @errors = [...@company, @user].compact.map(&:full_messages).flatten > render :errors > else > redirect Login > end > > But I'm wondering if there's a better way to solve this? > > // Magnus Holm > _______________________________________________ > Camping-list mailing list > Campingemail@example.com > http://rubyforge.org/mailman/listinfo/camping-list > -- Dave _______________________________________________ Camping-list mailing list Campingfirstname.lastname@example.org http://rubyforge.org/mailman/listinfo/camping-list