Welcome to the Treehouse Community

Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.

Start your free trial

Ruby Ruby Foundations Methods Class Methods

Undefined local variable or method for 'bank_account'. Can't deposit.

I seem to have all the code in my bank_account.rb file just as Jason has in the video, but am getting this error?

Help.

Tim Knight
Tim Knight
28,888 Points

Michael,

Would you mind posting your code here as you have it?

5 Answers

Tim Knight
Tim Knight
28,888 Points

I executed a few calls on the code without any issue:

BankAccount.create_for("Tim", "Knight")
account = BankAccount.find_for("Tim", "Knight")
puts account.full_name   # => Tim Knight
puts account.balance     # => 0
account.deposit(100)
puts account.balance     # => 100
account.withdraw(200)
puts account.balance     # => -100
Tim Knight
Tim Knight
28,888 Points

Oh I see. Basically Jason is just creating a local variable of bank_account to pull the details about a specific item. Since the local variable of bank_balance is a class object of BankAccount you then have access to all the methods you wrote in the code.

Sure.

class BankAccount

def self.create_for(first_name, last_name)
    @accounts ||= []
    @accounts << BankAccount.new(first_name, last_name)
end

def self.find_for(first_name, last_name)
    @accounts.find{|account| account.full_name == "#{first_name} #{last_name}"}
end

def initialize(first_name, last_name)
    @balance = 0
    @first_name = first_name
    @last_name = last_name
end

def full_name
    "#{@first_name} #{@last_name}"
end

def deposit(amount)
    @balance += amount
end

def withdraw(amount)
    @balance -= amount
end

def balance
    @balance
end

end

Tim Knight
Tim Knight
28,888 Points

The code looks okay so far. What are you executing to bring up the error?

I was executing the call Jason did in the course, bank_account.deposit(100).

I think I found the issue. I noticed you called account = BankAccount.find_for("Tim", "Knight")

I didn't do that before trying to deposit. I did it and it worked! Thanks.

Now, do you mind giving me a laymans as to why it worked?

Thanks!