Andrew Don
2007-Jun-26 13:15 UTC
nil values being set in scaffold generated code for 1.2.3
Using rails 1.2.3 on mac os x with mongrel / safari and mysql 5 ( have also tried against postgres 8.2 with the same results ). Encountering a problem on the following scaffold generated code ( used in the controller object which in this instance is managing the user model object). @user = User.new(params[:user]) The above line should populate a user object with values entered by the client. Unfortunately the user object is populated with nil values, even though the params user object has the client entered values. This seems very unusual and more than likely an error on my part, but suggestions about resolving the problem would be welcome. -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Bill Walton
2007-Jun-26 13:55 UTC
Re: nil values being set in scaffold generated code for 1.2.3
Hi Andrew, Andrew Don wrote:> @user = User.new(params[:user]) > The above line should populate a user object with values entered by the > client. Unfortunately the user object is populated with nil values, even > though the params user object has the client entered values. This seems > very unusual and more than likely an error on my part, but suggestions > about resolving the problem would be welcome.When you say the "user object is populated with nil values", do you mean the Rails object, or the related record in the database? If the latter, my first suggestion would be to check to see if there''s a validation that''s keeping the User.save from succeeding. If there''s not an obvious (one you look) problem there, I''d suggest you post some additional code. Best regards, Bill --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Andrew Don
2007-Jun-26 14:29 UTC
Re: nil values being set in scaffold generated code for 1.2.
Bill Walton wrote:> Hi Andrew, > > Andrew Don wrote: > >> @user = User.new(params[:user]) >> The above line should populate a user object with values entered by the >> client. Unfortunately the user object is populated with nil values, even >> though the params user object has the client entered values. This seems >> very unusual and more than likely an error on my part, but suggestions >> about resolving the problem would be welcome. > > When you say the "user object is populated with nil values", do you mean > the > Rails object, or the related record in the database? If the latter, my > first suggestion would be to check to see if there''s a validation that''s > keeping the User.save from succeeding. If there''s not an obvious (one > you > look) problem there, I''d suggest you post some additional code. > > Best regards, > BillBill, Thanks for responding. The code extract below is taken from the user controller object and is scaffold generated code : def create @user = User.new(params[:user]) if @user.save flash[:notice] = ''User was successfully saved.'' etc etc. I ran the code in debug mode setting a breakpoint just below the line ''@user = User.new(params[:user])'' and found that values entered on the browser were present in the params object but all the columns/attributes of the user object were null. There are model validations against the object in user.rb and these are correctly validated and return a list of failures , as the values in @user are all null. It would appear that there is a problem in the initialisation of the @user object, but of course this assumption is surely not correct. -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Bill Walton
2007-Jun-26 15:12 UTC
Re: nil values being set in scaffold generated code for 1.2.
Hi Andrew, Andrew Don wrote:> Thanks for responding.You''re welcome.> The code extract below is taken from the user > controller object and is scaffold generated code : > def create > @user = User.new(params[:user]) > if @user.save > flash[:notice] = ''User was successfully saved.'' > etc etc. > I ran the code in debug mode setting a breakpoint just below the line > ''@user = User.new(params[:user])'' and found that values entered on the > browser were present in the params object but all the columns/attributes > of the user object were null.Not sure what you''re using to look at the user object, but when you say "all the columns" it makes me wonder if you''re looking at the database rather than the in-memory object.> There are model validations against the object in user.rb > and these are correctly validated and return a list of > failures , as the values in @user are all null.To test whether the values in @user are, in fact, null, comment out the save and make a new view (just rename the old one) to be rendered by this controller method. In it, just render the values of the @user attributes (e.g., <%= @user.name %>).> It would appear that there is a problem in the initialisation > of the @user object, but of course this assumption is surely > not correct.Anything is possible, but I''d bet a nickle that the problem is in your validations. They can get tricky. For starters, comment out all your validations and see what gets saved. Then start adding the validations back to identify the one that''s giving you problems. Best regards, Bill --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Andrew Don
2007-Jun-26 16:07 UTC
Re: nil values being set in scaffold generated code for 1.2.
Bill Walton wrote:> Hi Andrew, > > Andrew Don wrote: > >> Thanks for responding. > > You''re welcome. > >> of the user object were null. > Not sure what you''re using to look at the user object, but when you say > "all > the columns" it makes me wonder if you''re looking at the database rather > than the in-memory object. > >> There are model validations against the object in user.rb >> and these are correctly validated and return a list of >> failures , as the values in @user are all null. > > To test whether the values in @user are, in fact, null, comment out the > save > and make a new view (just rename the old one) to be rendered by this > controller method. In it, just render the values of the @user > attributes > (e.g., <%= @user.name %>). > >> It would appear that there is a problem in the initialisation >> of the @user object, but of course this assumption is surely >> not correct. > > Anything is possible, but I''d bet a nickle that the problem is in your > validations. They can get tricky. For starters, comment out all your > validations and see what gets saved. Then start adding the validations > back > to identify the one that''s giving you problems. > > Best regards, > BillBill, Thanks again for your reply. I think you are absolutely right, the problem lies somewhere in the object model validations . I''m in the process of adding them back in one by one and I''ve already noticed that the values are now being assigned as expected to the @user object. ... I''ve just finished adding all the object model validations back and the @user object is behaving as expected i.e values assigned and validations checked. Any failures are reported back to the client i.e red outlined fields with previously entered values retained. A little curious as to what exactly was the problem. I shall update post if I find the exact reason behind the problem. But for now I''ll put it down to an error I''ve made at some point in the process. Thanks again for your help, much appreciated. -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---