# Using attr\_writer?

**URL:** <https://www.ruby-forum.com/t/using-attr-writer/73942>\
**Category:** Ruby\
**Created:** [February 26, 2006, 9:34pm UTC](https://www.ruby-forum.com/t/using-attr-writer/73942 "2006-02-26T21:34:28Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![joe](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/b9e5f3/32.png) [@joe](https://www.ruby-forum.com/u/joe)\
**Post date:** [February 26, 2006, 9:34pm UTC](https://www.ruby-forum.com/t/using-attr-writer/73942/1 "2006-02-26T21:34:28Z")

</div>

I’m confused about attr\_writer. I thought it worked like this:

class Foo  
attr\_writer :bar

def do\_stuff  
puts @bar  
end  
end

foo = Foo.new  
foo.bar = ‘baz’  
foo.do\_stuff # gives nil error

Can somebody enlighten me? 🙂

Thanks,  
Joe

---

<div class="post-metadata">

**Author:** ![joe](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/b9e5f3/32.png) [@joe](https://www.ruby-forum.com/u/joe)\
**Post date:** [February 26, 2006, 9:42pm UTC](https://www.ruby-forum.com/t/using-attr-writer/73942/2 "2006-02-26T21:42:08Z")

</div>

Joe wrote:

> I’m confused about attr\_writer. I thought it worked like this:
> 
> class Foo  
> attr\_writer :bar
> 
> def do\_stuff  
> puts @bar  
> end  
> end
> 
> foo = Foo.new  
> foo.bar = ‘baz’  
> foo.do\_stuff # gives nil error
> 
> Can somebody enlighten me? 🙂

This is perfectly valid. If this is not your actual code,  
could you post that instead? It might be something else  
entirely.

> Thanks,  
> Joe

E

---

<div class="post-metadata">

**Author:** ![joe](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/b9e5f3/32.png) [@joe](https://www.ruby-forum.com/u/joe)\
**Post date:** [February 26, 2006, 9:50pm UTC](https://www.ruby-forum.com/t/using-attr-writer/73942/3 "2006-02-26T21:50:32Z")

</div>

Curious. I just copied, pasted and ran your code. It produces the string  
‘baz’. I don’t get an error.

# best wishes Huw C.

# Bitwise Magazine [www.bitwisemag.com](http://www.bitwisemag.com) Dark Neon Ltd.

“Joe” [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote in message  
news:removed\_email\_address@domain.invalid…

---

<div class="post-metadata">

**Author:** ![joe](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/b9e5f3/32.png) [@joe](https://www.ruby-forum.com/u/joe)\
**Post date:** [February 26, 2006, 9:59pm UTC](https://www.ruby-forum.com/t/using-attr-writer/73942/4 "2006-02-26T21:59:37Z")

</div>

Are you running it in irb? As someone else mentioned… you’ll get a  
“nil” message as that’s the return value of puts.

-Jeff

---

<div class="post-metadata">

**Author:** ![joe](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/b9e5f3/32.png) [@joe](https://www.ruby-forum.com/u/joe)\
**Post date:** [February 26, 2006, 9:44pm UTC](https://www.ruby-forum.com/t/using-attr-writer/73942/5 "2006-02-26T21:44:28Z")

</div>

Joe wrote:

> foo = Foo.new  
> foo.bar = ‘baz’  
> foo.do\_stuff # gives nil error
> 
> Can somebody enlighten me? 🙂
> 
> Thanks,  
> Joe

puts returns nil

lopex

---

<div class="post-metadata">

**Author:** ![joe](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/b9e5f3/32.png) [@joe](https://www.ruby-forum.com/u/joe)\
**Post date:** [February 26, 2006, 11:06pm UTC](https://www.ruby-forum.com/t/using-attr-writer/73942/6 "2006-02-26T23:06:08Z")

</div>

Turns out I had a bug elsewhere in my code and it does in fact work as  
advertised. Thanks for the responses. 🙂

Joe
