Ruby Ruby Objects and Classes Build a Bank Account Class Printing The BankAccount

I think the answer is as below: def to_s puts "Name: " + @name + ", Balance: " + balance end

I don't know why my answer is not working

bank_account.rb
class BankAccount
  attr_reader :name

  def initialize(name)
    @name = name
    @transactions = []
    add_transaction("Beginning Balance", 0)
  end

  def balance
    balance = 0
    @transactions.each do |transaction|
      balance += transaction[:amount]
    end
    balance
  end

  def debit(description, amount)
    add_transaction(description, -amount)
  end

  def credit(description, amount)
    add_transaction(description, amount)
  end

  def add_transaction(description, amount)
    @transactions.push(description: description, amount: amount)
  end

  def to_s
    puts "Name: " + @name + ", Balance: " + balance
  end

end

1 Answer

Jay McGavren
STAFF
Jay McGavren
Treehouse Teacher

There are two issues with this code.

The balance method returns an Integer value. Numeric values can't be concatenated with strings:

puts "hi" + 2 # in `+': no implicit conversion of Fixnum into String (TypeError)

But if you use string interpolation, a numeric value can be substituted into a string:

puts "hi #{2}"

Try updating your to_s method to use string interpolation.

The second issue is that to_s needs to return a string value, not print it. Don't call puts, just have to_s return the string you create. See this video for more info.