# Observer not picking state change in user

**URL:** <https://www.ruby-forum.com/t/observer-not-picking-state-change-in-user/149698>\
**Category:** Rails\
**Created:** [September 28, 2008, 2:30pm UTC](https://www.ruby-forum.com/t/observer-not-picking-state-change-in-user/149698 "2008-09-28T14:30:04Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![vahagn](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/v/cc9497/32.png) [@vahagn](https://www.ruby-forum.com/u/vahagn)\
**Post date:** [September 28, 2008, 2:30pm UTC](https://www.ruby-forum.com/t/observer-not-picking-state-change-in-user/149698/1 "2008-09-28T14:30:04Z")

</div>

Hello,-

does anyone have a good idea of how to trace a fault in the following:

I have a User model (user.rb) with these methods:

def create\_reset\_code  
code = User.get\_random\_string(10) #working class method  
self.password\_reset\_code = code  
self.save(false)  
@reset = true  
#Notifier.deliver\_reset\_notification(self) #works from here  
end

def recently\_reset?  
@reset  
end

Also I have an Observer with this code:

class UserObserver \< ActiveRecord::Observer  
def after\_save(user)  
debugger  
puts "I observe " + user.username  
puts "Did " + user.username + " reset his password? " +  
user.recently\_reset?.to\_s  
Notifier.deliver\_reset\_notification(user) if user.recently\_reset?  
end  
end

The problem is that the user.recently\_reset? in the Observer returns  
nil.

When I test def recently\_reset? interactively in the console (testing  
the User model), it works as intended. So the user model works correctly  
and the Observer does, too (as evidenced by the debugger and the first  
puts statement).

I tried to test the UserObserver interactively but get this:

> > obs = UserObserver.new  
> > NoMethodError: private method `new’ called for UserObserver:Class  
> > from (irb):1
> 
> >

Why does the Observer fail to read the user.recently\_reset? correctly?

Thanks a lot,  
Vahagn

---

<div class="post-metadata">

**Author:** ![vahagn](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/v/cc9497/32.png) [@vahagn](https://www.ruby-forum.com/u/vahagn)\
**Post date:** [September 28, 2008, 2:46pm UTC](https://www.ruby-forum.com/t/observer-not-picking-state-change-in-user/149698/2 "2008-09-28T14:46:49Z")

</div>

On 28 Sep 2008, at 13:30, Vahagn H. wrote:

> 

Well you set @reset to true after you’ve called save: at this point  
all the callbacks and observers and so on have already run so it’s too  
late. You need to play with @reset before you call save.

Fred

---

<div class="post-metadata">

**Author:** ![vahagn](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/v/cc9497/32.png) [@vahagn](https://www.ruby-forum.com/u/vahagn)\
**Post date:** [September 28, 2008, 9:29pm UTC](https://www.ruby-forum.com/t/observer-not-picking-state-change-in-user/149698/3 "2008-09-28T21:29:05Z")

</div>

Oh well. I just love those programming mistakes that make one appear  
like a total n00b because they are so basic one doesn’t even stop to  
think about their possibility of occurring.

Thanks Fred, it’s working now 🙂

/ Vahagn
