Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Stack level too deep error in Ruby on Rails

I'm having a stack level too deep error using Ruby 1.8.7 with Rails 3.0.4 and with the rails console I performed the following commands.

leo%>rails console Loading development environment (Rails 3.0.4) ruby-1.8.7-head > leo = Organization.find(1)  SystemStackError: stack level too deep from /app/models/organization.rb:105:in `parents' 

Here is the object that is having issues..

class Organization < ActiveRecord::Base    has_many                  :group_organizations, :dependent => :delete_all   has_many                  :groups, :through => :group_organizations    has_many                  :orders   has_many                  :product_contracts    has_many                  :people   accepts_nested_attributes_for :people    has_many                  :addresses   accepts_nested_attributes_for :addresses    has_many                  :organizations   has_many                  :departments   has_many                  :organization_credits    has_many                  :documents    validates_presence_of     :name        def self.parents       @organizations = Organization.where("is_company = ?",true)       #@organization_parents = []       select_choice = I18n.t("select") + " "+ I18n.t("segments.description")       @organization_parents = [select_choice]       for organization in @organizations         @organization_parents << [organization.name, organization.id]       end       return @organization_parents     end 
like image 630
Leo Avatar asked Mar 26 '11 23:03

Leo


1 Answers

This error generally happens when you accidentally recursively changing an attribute. If you have a username attribute in User model, and a virtual attribute named username, that is directly changing the username, you end up calling the virtual, the virtual calls the virtual again and so on.. Therefore, take a look on whether something like that happens somewhere in your code.

like image 61
Spyros Avatar answered Sep 22 '22 22:09

Spyros