У меня есть концепция под названием snapshot
, которая в основном хранит снимок того, как данные выглядели в определенный период времени.То, что я создаю, - это метод, который перебирает моментальные снимки для каждого события и создает небольшой хэш, в котором с течением времени определяется принадлежность данного акционера.
def fetch_ownership_over_time(shareholder, captable)
@shareholder = Shareholder.find(shareholder.id)
@captable = Captable.find(captable.id)
@company = @captable.company.id
@ownership_over_time = []
@captable.events.collect(&:snapshot).each do |snapshot|
parsed_snapshot = JSON.parse(snapshot)
@ownership_over_time.push(parsed_snapshot["event"]["name"])
@ownership_over_time.push(parsed_snapshot["event"]["date"])
parsed_snapshot["shareholders"].each do |shareholder|
if shareholder["id"] == @shareholder.id
@ownership_over_time.push(shareholder["ownership_percentage"])
end
end
end
return @ownership_over_time
end
Затем я вызываю этот метод на мой взгляд, который успешно извлекает правильные значения, однако они никак не структурированы:
["Event 1 ", "2018-11-19", "0.666666666666667", "Event 2 ", "2018-11-19", "0.333333333333333", "4th event ", "2018-11-19", "0.315789473684211"]
Что бы я хотел сделать сейчас, хотяЭто построить мой хэш так, чтобы каждое отдельное событие снимка содержит name
, date
и ownership_percentage
.
Возможно, что-то вроде этого:
ownership_over_time = [
{
event_name = "Event 1" #parsed_snapshot["event"]["name"]
event_date = "20180202" #parsed_snapshot["event"]["date"]
ownership_percentage = 0.37 #shareholder["ownership_percentage"]
},
{
event_name = "Event 2" #parsed_snapshot["event"]["name"]
event_date = "20180501" #parsed_snapshot["event"]["date"]
ownership_percentage = 0.60 #shareholder["ownership_percentage"]
}
]
Моя задача, однако, заключается в том, что атрибуты ["event"]["name"]
и ["event"]["date"]
мне нужно извлекать при циклическом выполнении моих снимков, то есть первого цикла (.each do |snapshot|
) тогда как я получаю ownership_percentage
при циклическом переключении между акционерами - второй цикл (.each do |shareholder|
).
Итак, мой вопрос - как я могу построить этот хеш в «двух» местах, чтобы я мог вернуть хеш с 3 атрибутами?
Благодарность за руководство / помощь - спасибо!