RubyonRails_newbie
2009-Aug-28 12:20 UTC
*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
Colin Law
2009-Aug-28 13:26 UTC
Re: *Please Help* Cannot save a new user to the database...
2009/8/28 RubyonRails_newbie <craigwesty79-gM/Ye1E23mwN+BqQ9rBEUg@public.gmane.org>:> > 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
RubyonRails_newbie
2009-Aug-28 13:33 UTC
Re: *Please Help* Cannot save a new user to the database...
cheers Colin - i''ll try this out. On 28 Aug, 14:26, Colin Law <clan...-gM/Ye1E23mwN+BqQ9rBEUg@public.gmane.org> wrote:> 2009/8/28 RubyonRails_newbie <craigwest...-gM/Ye1E23mwN+BqQ9rBEUg@public.gmane.org>: > > > > > > > > > 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- Hide quoted text - > > - Show quoted text -
RubyonRails_newbie
2009-Aug-28 13:49 UTC
Re: *Please Help* Cannot save a new user to the database...
... 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) On 28 Aug, 14:33, RubyonRails_newbie <craigwest...-gM/Ye1E23mwN+BqQ9rBEUg@public.gmane.org> wrote:> cheers Colin - i''ll try this out. > > On 28 Aug, 14:26, Colin Law <clan...-gM/Ye1E23mwN+BqQ9rBEUg@public.gmane.org> wrote: > > > > > 2009/8/28 RubyonRails_newbie <craigwest...-gM/Ye1E23mwN+BqQ9rBEUg@public.gmane.org>: > > > > 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- Hide quoted text - > > > - Show quoted text -- Hide quoted text - > > - Show quoted text -
Hassan Schroeder
2009-Aug-28 15:30 UTC
Re: *Please Help* Cannot save a new user to the database...
On Fri, Aug 28, 2009 at 5:20 AM, RubyonRails_newbie<craigwesty79-gM/Ye1E23mwN+BqQ9rBEUg@public.gmane.org> wrote:> 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.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. -- Hassan Schroeder ------------------------ hassan.schroeder-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org twitter: @hassan
Colin Law
2009-Aug-28 15:45 UTC
Re: *Please Help* Cannot save a new user to the database...
2009/8/28 RubyonRails_newbie <craigwesty79-gM/Ye1E23mwN+BqQ9rBEUg@public.gmane.org>:> > ... 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> On 28 Aug, 14:33, RubyonRails_newbie <craigwest...-gM/Ye1E23mwN+BqQ9rBEUg@public.gmane.org> > wrote: >> cheers Colin - i''ll try this out. >> >> On 28 Aug, 14:26, Colin Law <clan...-gM/Ye1E23mwN+BqQ9rBEUg@public.gmane.org> wrote: >> >> >> >> > 2009/8/28 RubyonRails_newbie <craigwest...-gM/Ye1E23mwN+BqQ9rBEUg@public.gmane.org>: >> >> > > 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- Hide quoted text - >> >> > - Show quoted text -- Hide quoted text - >> >> - Show quoted text - > > >
Matt Jones
2009-Aug-29 16:35 UTC
Re: *Please Help* Cannot save a new user to the database...
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 On Aug 28, 8:20 am, RubyonRails_newbie <craigwest...-gM/Ye1E23mwN+BqQ9rBEUg@public.gmane.org> wrote:> 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