# 2 "newbie questions"

**URL:** <https://www.ruby-forum.com/t/2-newbie-questions/119855>\
**Category:** Rails\
**Created:** [November 11, 2007, 11:06am UTC](https://www.ruby-forum.com/t/2-newbie-questions/119855 "2007-11-11T11:06:53Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![vincent](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/v/e9bcb4/32.png) [@vincent](https://www.ruby-forum.com/u/vincent)\
**Post date:** [November 11, 2007, 11:06am UTC](https://www.ruby-forum.com/t/2-newbie-questions/119855/1 "2007-11-11T11:06:53Z")

</div>

Hello -

Being new to Ruby and Rails I am finding some hurdles that kind of  
slow my progress.

1. What is the difference between the 2 statements:

staff = Staff.find(params[:id])  
and  
[@staff](https://www.ruby-forum.com/groups/staff) = Staff.find(params[:id])

I find books and articles using either of them but I fail to grasp why  
this should be different

1. This piece of code does not work and I have no idea why:

controlller:

```
@subscriber = Subscriber.new(params[:subscriber])
@subscriber.activate
@subscriber.save

```

the function activate is defined in the model:  
def activate  
@active = 1  
end

(active beeing one of the row of the table).

Result: this does not set active to 1.  
If in my controller I set @subscriber.active = 1 then it works and the  
row is saved with active set to 1.

Thanks for your help !!!

---

<div class="post-metadata">

**Author:** ![vincent](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/v/e9bcb4/32.png) [@vincent](https://www.ruby-forum.com/u/vincent)\
**Post date:** [November 11, 2007, 11:16am UTC](https://www.ruby-forum.com/t/2-newbie-questions/119855/2 "2007-11-11T11:16:07Z")

</div>

Well, talking about rails, if you do in your controller  
staff = Staff.find(1), then you can’t use that in your views, because it  
goes out of scope, instead, if you use [@staff](https://www.ruby-forum.com/groups/staff), it will be available in  
your view. I suggest you to read something about scope and variables.

For the second problem, try tu use active = 1 instead of @active = 1.  
I’m not sure let me know f it works

---

<div class="post-metadata">

**Author:** ![vincent](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/v/e9bcb4/32.png) [@vincent](https://www.ruby-forum.com/u/vincent)\
**Post date:** [November 11, 2007, 11:51am UTC](https://www.ruby-forum.com/t/2-newbie-questions/119855/3 "2007-11-11T11:51:21Z")

</div>

Thanks for the answer. I know understand about the scope thing.  
I’ve tried using “active = 1” in my model but this still does not  
work. Any further idea?

On Nov 11, 10:16 am, Oscar Del ben [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)

---

<div class="post-metadata">

**Author:** ![vincent](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/v/e9bcb4/32.png) [@vincent](https://www.ruby-forum.com/u/vincent)\
**Post date:** [November 11, 2007, 12:23pm UTC](https://www.ruby-forum.com/t/2-newbie-questions/119855/4 "2007-11-11T12:23:31Z")

</div>

def activate  
self.active = 1  
end

-\> This works! Many thanks Felipe!

---

<div class="post-metadata">

**Author:** ![vincent](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/v/e9bcb4/32.png) [@vincent](https://www.ruby-forum.com/u/vincent)\
**Post date:** [November 11, 2007, 12:00pm UTC](https://www.ruby-forum.com/t/2-newbie-questions/119855/5 "2007-11-11T12:00:42Z")

</div>

On the model:

try this:

def activate  
self.active = 1  
self.save #you might even remove this, not sure  
end

or, if it does not work, you can always use

def activate(user\_id)  
user = User.find\_by\_id(user\_id)  
user.active = 1  
end

and then in the controller

User.activate(222) #or whatever the id is

Best regards,

Felipe
