выполнение метода в IRB - PullRequest
       1

выполнение метода в IRB

0 голосов
/ 08 ноября 2011

Не могу найти, что с этим не так.

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 Ответ

1 голос
/ 08 ноября 2011

Метод класса 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...