无法找到这个问题。
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)
有什么想法吗?
答案 0 :(得分:1)
transaction
class method将单个(可选)选项哈希作为参数,但您传递的是from
和to
:
transaction(from, to) do
你的控制台测试只使用Stock.transaction
而没有任何参数。您的transfer
类方法应该看起来更像这样:
def self.transfer(from, to, quantity)
transaction do
from.withdraw(quantity)
to.deposit(quantity)
end
end