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
<[email protected]> 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 <[email protected]> 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?)
>> �[email protected]
>> �[email protected]
>> )
>>
>> Dave
>>
>> On Sat, Jul 31, 2010 at 7:20 AM, Magnus Holm <[email protected]> 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
>>> [email protected]
>>> http://rubyforge.org/mailman/listinfo/camping-list
>>>
>>
>>
>>
>> --
>> Dave
>> _______________________________________________
>> Camping-list mailing list
>> [email protected]
>> http://rubyforge.org/mailman/listinfo/camping-list
>>
> _______________________________________________
> Camping-list mailing list
> [email protected]
> http://rubyforge.org/mailman/listinfo/camping-list
>
--
Dave
_______________________________________________
Camping-list mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/camping-list