From: dobest03 Date: 2005-05-16T21:55:30+09:00 Subject: Newbie: pinpoint my mistake please.. Hello. Can anyone pinoint me where I made a mistake? Error message is as follows: accounts.rb(main):038:0> accounts.transferToSavings(100) NoMethodError: undefined method `balance' for 0:Fixnum from accounts.rb:29:in `debit' from accounts.rb:29:in `transferToSavings' from accounts.rb:42 from :0 But if I commented out "ths doesn't works" and remove comments on "this works" codes, it works. Don't the code @checking = super(checking) @savings = super(savings) create a new 'Account' class instances and stores them into instance variable of class 'Accounts' @checking and @savings respectively? class Account def initialize(balance) @balance = balance end attr_reader :balance attr_writer :balance end class Accounts < Account attr_reader :checking, :savings def initialize(checking, savings) # these doesn't works @checking = super(checking) @savings = super(savings) # but these works # @checking = checking # @savings = savings end private def debit(account, amount) account.balance -= amount end def credit(account, amount) account.balance += amount end public def transferToSavings(amount) # private method can be called only in the defining class debit(@checking, amount) credit(@savings, amount) end end # this doesn't work accounts = Accounts.new(0, 10000) # this works #accounts = Accounts.new(Account.new(0), Account.new(10000)) accounts.balance # balance is the instance method of class 'Account' accounts.balance = 100 accounts.checking accounts.savings accounts.transferToSavings(100) accounts.checking accounts.savings Thanks a lot SYLee