I had this problem in Rails! Yes, the short circuit evaluation messes it up. So I did this:
if [...@company.valid?, @user.valid?].all? # do stuff end jeremy On Sat, Jul 31, 2010 at 9:43 PM, David Susco <dsu...@gmail.com> wrote: > That's weird, I can't test anything until Monday but what happens when > you nest it in two ifs? > > If @company.valid? > if @user.valid? > save > > On Sat, Jul 31, 2010 at 12:17 PM, Skyler Richter > <skylerrich...@gmail.com> wrote: >> @David Susco >> >> I figured that was the way to do it. Thats what I tried the first time >> but I seem to only be able to validate 1 item at a time. It only >> validates the company model and it ignores the "&& @user.valid?" If I >> rearrange my code so that the user gets saved first then only the user >> validates and then it ignores the "&& @company.valid?". Any ideas? >> >> On Sat, Jul 31, 2010 at 6:31 AM, David Susco <dsu...@gmail.com> wrote: >>> 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 >>>> Camping-list@rubyforge.org >>>> http://rubyforge.org/mailman/listinfo/camping-list >>>> >>> >>> >>> >>> -- >>> Dave >>> _______________________________________________ >>> Camping-list mailing list >>> Camping-list@rubyforge.org >>> http://rubyforge.org/mailman/listinfo/camping-list >>> >> _______________________________________________ >> Camping-list mailing list >> Camping-list@rubyforge.org >> http://rubyforge.org/mailman/listinfo/camping-list >> > > > > -- > Dave > _______________________________________________ > Camping-list mailing list > Camping-list@rubyforge.org > http://rubyforge.org/mailman/listinfo/camping-list > _______________________________________________ Camping-list mailing list Camping-list@rubyforge.org http://rubyforge.org/mailman/listinfo/camping-list