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

  def self.kids
    where(food_type_id: 1)
  end

  def self.pets
    where(food_type_id: 2)
   end

end

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]

end

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

Food.kids.expired 

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.