Ruby, stack level too deep (SystemStackError)

You need to do:

@price = self.price

to differentiate between your object attribute price and your method parameter price.


Your below code

def price
  @price = price # <~~ method name you just defined with `def` keyword.
end

Creates never stopable recursion,.

How can I make this code work the way it is without attr_accessor?

You need to write as

def price=(price)
  @price = price
end
def price
  @price 
end

read_attribute is what you are looking for

def price 
  @price = read_attribute(:price)
end

Tags:

Ruby