Hey rails-talk, I have a little question: How do you handle multiple
inserts like these in ActiveRecord? It’s for a little Camping app that
skylerrichter is writing, but it’s just plain, simple ActiveRecord, so
it shouldn’t really be any difference from a Rails app:
@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 I don’t want
any of them to be saved. 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 (more Rails-y) way to solve this?