This is really strange - hopefully someone out there may have seen
behavior like this before. I have a user successfully created in the
Users table of my application. When I try to update a single column
using:
@user = User.find(:first,
:conditions => ["login_name = ?",
@login_user.login_name])
@user.new_cookie_key
@user.save
I get the error: "NoMethodError in Users#login. You have a nil object
when you didn''t expect it!"
The user is found OK, the new_cookie_key method works as expected, but I
can''t save the object! I''ve removed all validation from the
User model
but that makes no difference. If I comment out the save method and debug
the object using <%= debug(@user) %> in a View, the object and its
contents are shown as expected, so it certainly isn''t a nil object!
--
Posted via http://www.ruby-forum.com/.
I''ve dug a little deeper, and found this in the server log: User Load (0.001551) SELECT * FROM users WHERE (login_name = ''adam'' ) LIMIT 1 SQL (0.000273) BEGIN User Load (0.001240) SELECT * FROM users WHERE (login_name = ''adam'' AND id <> 16) LIMIT 1 SQL (0.000279) COMMIT Weird thing is, "adam" row in the database has the id of 16! Why is rails selecting the users table with id != 16? Why is there no update before the commit? Lindsay -- Posted via http://www.ruby-forum.com/.
At 2/23/2006 03:13 PM, you wrote:>I''ve dug a little deeper, and found this in the server log: > > User Load (0.001551) SELECT * FROM users WHERE (login_name = ''adam'' >) LIMIT 1 > SQL (0.000273) BEGIN > User Load (0.001240) SELECT * FROM users WHERE (login_name = ''adam'' >AND id <> 16) LIMIT 1 > SQL (0.000279) COMMIT > >Weird thing is, "adam" row in the database has the id of 16! Why is >rails selecting the users table with id != 16? Why is there no update >before the commit? > >LindsayIs there a validate_uniqueness_of on the login_name? I''d suspect that the second SQL would be to confirm that. -Rob
> Is there a validate_uniqueness_of on the login_name?Oh, I see now... I''ve added an '':on => :create'' condition and this appears to have fixed that particular problem. Thanks! Ok, my server log is now showing: User Load (0.000913) SELECT * FROM users WHERE (login_name = ''adam'' ) LIMIT 1 SQL (0.000310) BEGIN SQL (0.000242) ROLLBACK So somehow my @user.save method is still causing me grief! Lindsay -- Posted via http://www.ruby-forum.com/.