ruby - ActiveModel::Serializer instance variable in class unaccessible in method -


i have snippet below in activemodel::serializer. it's recursive method, need add array that's returned when recursion ends.

so, set instance variable @rows equal empty array []. push onto array in method, ruby returning undefined method 'push' nil:nilclass.

class myserializer < activemodel::serializer   attributes :hierarchies    @rows = []    def hierarchies_run(child, user)     hierarchy = userhierarchy.where(child: child, user_id: user).first      if hierarchy       @rows.push(usersimpleserializer.new(user.find(hierarchy.child), :root => false))       hierarchies_run(hierarchy.parent, current.id)     else       @rows.push(usersimpleserializer.new(user.find(child), :root => false))     end   end    def hierarchies     hierarchies_run(current.id, current.id)     @rows   end end 

why returning error?

the problem have defined @row in class (the constructor itself) instead of instance. should put initialization of @row like:

class myserializer < activemodel::serializer   attributes :hierarchies    def initialize     @rows = []   end    ... 

then when call

  myserializer.new 

@row initialized within instance's context


Comments

Popular posts from this blog

How has firefox/gecko HTML+CSS rendering changed in version 38? -

android - CollapsingToolbarLayout: position the ExpandedText programmatically -

Listeners to visualise results of load test in JMeter -