Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

In rails, does it matter to use local variable or instance variable in action methods

I have a lot action methods which do not need to create instance variable for rendering the view, because these method will only redirect to other actions from other controllers. I am wondering: is it a good habit to always create instance variable for the sake of following the conventions of Rails, or there is no such thing. My intuition is that local variable reduces memory costs, but the code does not look pretty.

like image 639
Rn2dy Avatar asked Oct 25 '11 05:10

Rn2dy


Video Answer


2 Answers

It's not a convention to create instance variables if they're not being sent to the view.

  • Variables should have the narrowest scope possible.
  • They should be locals if they're not passed to the view.
  • Use a presenter if you have a "lot" of view data (instead of a ton of instance vars).

Instance variables may be used if multiple methods act on them before the view, even if they're not used in the view, but this makes the code much harder to reason about and test in isolation.

If you find yourself using instance variables to hold intermediate calculations you probably need to rethink your flow and/or design.

like image 69
Dave Newton Avatar answered Sep 19 '22 17:09

Dave Newton


Mostly we need to use instance variable in following cases,

  1. When we need to access the variable from view
  2. If we are calling a method from the action, instead of returning a value, we can directly update the variable from the called method.

Why should we use instance variable if our job can be done with a local variable.

like image 28
nkm Avatar answered Sep 22 '22 17:09

nkm