[英]executing method in 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.transaction do; sone.deposit(10); stwo.withdraw(10); end
但如果我这样做
Stock.transfer(sone, stwo, 10)
我收到ArgumentError: wrong number of arguments (2 for 1)
任何想法?
transaction
类方法采用单个(可选)选项Hash作为参数,但是您要将其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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.