2011-11-08 60 views
0

找不到這是什麼問題。在irb中執行方法

def self.transfer(from, to, quantity) 
transaction(from, to) do 
    from.withdraw(quantity) 
    to.deposit(quantity) 
end 
end 

在控制檯這部作品

Stock.transaction do; sone.deposit(10); stwo.withdraw(10); end但如果我不

Stock.transfer(sone, stwo, 10)我收到ArgumentError: wrong number of arguments (2 for 1)

任何想法?

回答

1

transaction class method接受單個(可選)選擇哈希作爲參數,但你通過它fromto

transaction(from, to) do 

你控制檯測試只是使用Stock.transaction不帶任何參數都沒有。您的transfer類方法應該看起來更像這樣:

def self.transfer(from, to, quantity) 
    transaction do 
    from.withdraw(quantity) 
    to.deposit(quantity) 
    end 
end