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

Reply via email to