ruby on rails - Access to class instance variable -


how can read class variable? in case can't value variable.

class mediacontentscontroller < applicationcontroller    @randomusrid = rand(100)    def create             puts @randomusrid   end  end 

first of all, @randomusrid refers instance variable, not class variable. can access through instance of class, not direct on class. class variable, should use @@randomusrid.

what looking attr_accessor :randomusrid, through this, can read on instance method, , can set through instance of class.

here's how:

class mediacontentscontroller < applicationcontroller   attr_accessor :randomusrid    @randomusrid = rand(100)    def create     puts @randomusrid   end end 

but @randomusrid = rand(100) won't set @randomusrid random number, @ least not recommend way. should use before_action here.

class mediacontentscontroller < applicationcontroller   attr_accessor :randomusrid   before_action :set_user_id_to_a_random_number, only: :create    def create     puts @randomusrid   end    private   def set_user_id_to_a_random_number     @randomusrid = rand(100)   end end 

edit:

each time call set_user_id_to_a_random_number function, generate different number based on rand(100) , store inside @randomusrid. if that's not want, , want persist same value, can following:

def set_user_id_to_a_random_number   @randomusrid = rand(100) unless defined? @randomusrid end 

edit:

what have stated works 1 request, if have multiple request, won't work. ryan bates says here:

an instance variable sticks around single request, using technique described benefit if need call method multiple times per request.

that leaves 2 options if want store between multiple requests. either can go databases, or can use called memcached.


Comments

Popular posts from this blog

c# - Validate object ID from GET to POST -

node.js - Custom Model Validator SailsJS -

php - Find a regex to take part of Email -