*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....
(http://railsspace.com/4_register/listing-4-20.txt)

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
http://railscasts.com/episodes/54-debugging-with-ruby-debug). 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