在irb中执行方法

时间:2011-11-08 06:11:06

标签: ruby-on-rails console ruby-on-rails-3.1

无法找到这个问题。

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 个答案:

答案 0 :(得分: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