It's strange for me to write something that disputes my post earlier. I just spent an hour trying to fix "stack level too deep" error. Only to find out that it has to do with named scopes.

Here's the problem. I have a class called Food (not really food but since I'm hungry it's all I could think of right now). Food has many food types.

This was wrong:

class Food < ActiveRecord::Base

    where(food_type_id: 1)

  def self.pets
    where(food_type_id: 2)


I got stack level too deep error. Calling Food.all also didn't work. Puzzling right? I'm using Rails 3.0.3.

This worked however:

class Food < ActiveRecord::Base

  scope :kids, where(food_type_id: 1)
  scope :pets, where(food_type_id: 2)
  scope :expired, conditions: ["expiration_date <= ?", Time.current]


So it works now. But I have no idea why. 

Update: The issue with the method is now fixed.

comments powered byDisqus

Hello! I am Kat. I've been a developer for several years. When I'm not sitting down, reading and working for long hours, I am traveling to some place of interest.
If you want to reach out, you can send me an email or add me up on Google Plus.