*Please Help* Cannot save a new user to the database...

Hello,

I am following the RailsSpace tutorial and am at the point where I am creating a new user through (user/register)

I have added the details into the form: screen_name, email and password.

When I click register, I would expect this to be saved (commited) to the database.

However – when I look in the terminal, it says ‘Rollback’ instead of ‘COMMIT’

The code in the user controller looks like this:

class UserController < ApplicationController

  def register     @title = "Register"     if request.post? and params[:user]       @user = User.new(params[:user])       if @user.save         flash[:notice] = "User #{@user.screen_name} created!"         redirect_to :action => "index"       end     end   end

Does anyone know why in my terminal it is not saving this as I’d expect?

Many Thanks

Hello,

I am following the RailsSpace tutorial and am at the point where I am creating a new user through (user/register)

I have added the details into the form: screen_name, email and password.

When I click register, I would expect this to be saved (commited) to the database.

However – when I look in the terminal, it says ‘Rollback’ instead of ‘COMMIT’

The code in the user controller looks like this:

class UserController < ApplicationController

def register @title = "Register" if request.post? and params[:user] @user = User.new(params[:user]) if @user.save flash[:notice] = "User #{@user.screen_name} created!" redirect_to :action => "index"

I would expect see something like this here, for the case when the save fails        else          render :action => "new or whatever is is the action that posted to register"

 end

end end

Does anyone know why in my terminal it is not saving this as I’d expect?

Maybe your validations are failing, if you have the else condition above and then in the new action (or whatever it is) inside the form_for you should have <%= f.error_messages %> and the errors will appear.

Colin

cheers Colin - i'll try this out.

... the strange thing is, the code I have written is axactly the same as that in the railsspace website.... (Railsspace.com is for sale | HugeDomains)

And there's no specific error in the log? That's surprising.

I would try this in the Rails console, using @user.save! to show any errors being generated.

You could also look at your DB query and/or error logs for more info.

... the strange thing is, the code I have written is axactly the same as that in the railsspace website.... (http://railsspace.com/4_register/listing-4-20.txt)

Could you bottom post rather than top? That is the convention on this list, it makes it easier to follow threads.

Do they go on to extend this code to cope with save failures later on in the tutorial? If you just want to get past this for the moment have a close look at any validations in the User model, possibly comment them out for the moment. Also have a look at the log (log/development.log) to see what values were passed as params in the POST. This may be a good time to have a look at ruby-debug (see #54 Debugging with ruby-debug - RailsCasts). You could put a break point after @user = User.new(params[:user]) and check that it looks ok.

Colin

As others have pointed out, there's a validation failing on your User model.

I'd also point out that RailsSpace may not be a good book to start with, as it is positively ancient as Rails books code. The printed code is targeted at version 1.2.3, which is over 2 years old now. You'll be better served, I'd assume, with a newer tutorial.

--Matt Jones