@TeiSinTai

Может ли работать следующий код?

Имеется метод класса с объявлением
def create(time: nil, user: nil, event: nil, status: nil, user_ip: nil)

Он вызывается следующим образом:
body = YAML.load(yaml_body)
success, status = SomeLib::SomePart::SomeClass.create(body)

body при этом выглядит так (результат body.inspect):
{"eventMillis"=>"12340981201",  "userLogin"=>"someUser", "typeCode"=>"USR_AUTH", "resultCode"=>"SUCCESS", "ipAddress"=>"127.0.0.1"}

Собственно, указанный код выдает ошибку "wrong number of arguments (1 for 0)."
Версия ruby 2.1.5p273
Мои познания в ruby ограничены тем, что я прочитал в свободное время за последние пару дней, потому хотелось бы знать, может ли работать указанный код - на какой-либо другой версии ruby, с какой-нибудь дополнительной библиотекой/настройкой.... В-общем, есть ли вероятность, что он не работает по причинам, отличающимся от "неправильно написано".
  • Вопрос задан
  • 117 просмотров
Решения вопроса 1
oh_shi
@oh_shi
Не может. Либо ключи в хеше должны называться так же как и параметры:
{time: '12340981201', user: 'someUser', event: 'USR_AUTH', status: 'SUCCESS', user_ip: '127.0.0.1'}

Либо придется описывать вручную каждый параметр:
success, status = SomeLib::SomePart::SomeClass.create(time: body['eventMillis'], user: body['userLogin'], event: body['typeCode'], status: body['resultCode'], user_ip: body['ipAddress'])
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы