# Variable name convention

**URL:** <https://www.ruby-forum.com/t/variable-name-convention/144352>\
**Category:** Rails\
**Created:** [July 28, 2008, 11:11pm UTC](https://www.ruby-forum.com/t/variable-name-convention/144352 "2008-07-28T23:11:39Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![joel](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/b9bd4f/32.png) [@joel](https://www.ruby-forum.com/u/joel)\
**Post date:** [July 28, 2008, 11:11pm UTC](https://www.ruby-forum.com/t/variable-name-convention/144352/1 "2008-07-28T23:11:39Z")

</div>

Hello All,

still a newbie in rails and would like to know when I shoud place a  
‘@’ before a variable name and when not ?

Regards,

Joel

---

<div class="post-metadata">

**Author:** ![joel](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/b9bd4f/32.png) [@joel](https://www.ruby-forum.com/u/joel)\
**Post date:** [July 28, 2008, 11:25pm UTC](https://www.ruby-forum.com/t/variable-name-convention/144352/2 "2008-07-28T23:25:07Z")

</div>

Hi Joel,

The @ symbol is (through my experience) generally used for sharing  
variables between controllers and views. So in your controller, you’d  
have something like:

@var = Users.find(…)

And in your view:

\<%= "Hi, " + @var.first\_name %\>

But, again, that’s just how I use it 🙂

---

<div class="post-metadata">

**Author:** ![joel](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/b9bd4f/32.png) [@joel](https://www.ruby-forum.com/u/joel)\
**Post date:** [July 28, 2008, 11:31pm UTC](https://www.ruby-forum.com/t/variable-name-convention/144352/3 "2008-07-28T23:31:00Z")

</div>

On Mon, Jul 28, 2008 at 4:10 PM, joel [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> still a newbie in rails and would like to know when I shoud place a  
> ‘@’ before a variable name and when not ?

It has nothing to do with convention.

@foo is an instance variable

foo is a local variable

[http://www.ruby-doc.org/docs/ProgrammingRuby/](http://www.ruby-doc.org/docs/ProgrammingRuby/)

In particular:  
[http://www.ruby-doc.org/docs/ProgrammingRuby/html/tut\_classes.html](http://www.ruby-doc.org/docs/ProgrammingRuby/html/tut_classes.html)

–  
Greg D.  
[http://destiney.com/](http://destiney.com/)

---

<div class="post-metadata">

**Author:** ![joel](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/b9bd4f/32.png) [@joel](https://www.ruby-forum.com/u/joel)\
**Post date:** [July 28, 2008, 11:29pm UTC](https://www.ruby-forum.com/t/variable-name-convention/144352/4 "2008-07-28T23:29:59Z")

</div>

joel wrote:

> Hello All,
> 
> still a newbie in rails and would like to know when I shoud place a  
> ‘@’ before a variable name and when not ?
> 
> Regards,
> 
> Joel

See here:  
[http://www.ruby-doc.org/docs/ProgrammingRuby/html/tut\_classes.html](http://www.ruby-doc.org/docs/ProgrammingRuby/html/tut_classes.html)

---

<div class="post-metadata">

**Author:** ![joel](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/b9bd4f/32.png) [@joel](https://www.ruby-forum.com/u/joel)\
**Post date:** [July 29, 2008, 12:31am UTC](https://www.ruby-forum.com/t/variable-name-convention/144352/5 "2008-07-29T00:31:52Z")

</div>

Ok Great !

Thanks Guys for these resources !

Joel

---

<div class="post-metadata">

**Author:** ![joel](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/b9bd4f/32.png) [@joel](https://www.ruby-forum.com/u/joel)\
**Post date:** [July 29, 2008, 2:55am UTC](https://www.ruby-forum.com/t/variable-name-convention/144352/6 "2008-07-29T02:55:42Z")

</div>

foo could also be a method!

Be wary of the fact that local variables take precedence over methods,  
as shown in this example:

> > foo = “woot”  
> > =\> “woot”
> 
> > def foo  
> > “bar”  
> > end  
> > =\> nil
> 
> > foo  
> > =\> “woot”

---

<div class="post-metadata">

**Author:** ![joel](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/b9bd4f/32.png) [@joel](https://www.ruby-forum.com/u/joel)\
**Post date:** [July 29, 2008, 1:28pm UTC](https://www.ruby-forum.com/t/variable-name-convention/144352/7 "2008-07-29T13:28:02Z")

</div>

To avoid that you can just write foo() i.e. with the parentheses, if  
you want to call the function.

---

<div class="post-metadata">

**Author:** ![joel](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/b9bd4f/32.png) [@joel](https://www.ruby-forum.com/u/joel)\
**Post date:** [July 31, 2008, 3:38am UTC](https://www.ruby-forum.com/t/variable-name-convention/144352/8 "2008-07-31T03:38:12Z")

</div>

OK ! Nice information guys !

Thanks !

Joel

---

<div class="post-metadata">

**Author:** ![joel](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/b9bd4f/32.png) [@joel](https://www.ruby-forum.com/u/joel)\
**Post date:** [July 31, 2008, 1:26pm UTC](https://www.ruby-forum.com/t/variable-name-convention/144352/9 "2008-07-31T13:26:50Z")

</div>

On 29 Jul 2008, at 01:55, Ryan B. wrote:

> foo could also be a method!
> 
> Be wary of the fact that local variables take precedence over methods,  
> as shown in this example:

A common mistake related to this is

class Foo  
attr\_accessor :bar  
def some\_method  
bar = true  
end  
end

This does not call the accessor, and does not set @bar (only the local  
variable bar).

Fred
