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 trialMichael Branch
6,254 PointsUndefined 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.
5 Answers
Tim Knight
28,888 PointsI 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
28,888 PointsOh 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.
Michael Branch
6,254 PointsSure.
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
28,888 PointsThe code looks okay so far. What are you executing to bring up the error?
Michael Branch
6,254 PointsI 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?
Michael Branch
6,254 PointsThanks!
Tim Knight
28,888 PointsTim Knight
28,888 PointsMichael,
Would you mind posting your code here as you have it?