В моей базе данных Rails у меня есть следующие таблицы:
users
statuses
(скажем, их имена включают active
и inactive
), status_records
для каждой даты для каждого пользователя, чтобы показать свой статус (например, date: '2019-07-09', user: User.first, status: Status.find_by(name: 'active')
Я хотел бы получить данные во вложенном хэше, например:
data = {
"active"=>{
"Rick"=>["2019-07-09", "2019-07-10"],
"Morty"=>["2019-07-09", "2019-07-10"],
"Summer"=>["2019-07-09", "2019-07-10"]
},
"inactive"=>{
"Rick"=>["2019-07-01", "2019-07-02", "2019-07-03"],
"Summer"=>["2019-07-15"]
}
}
До сих пор я дошел до этого.
data = StatusRecord.joins(:status, :user)
.where(statuses: {name: ['active', 'inactive']})
.select('status_records.date, statuses.name as status, users.name as username')
.group_by(|record| [record.status, record.username])
Вышеприведенное подводит меня к структуре данных ниже, но, как я уже писал ранее, это не совсем то, что я хочу (я хочуорганизовать данные как вложенный хэш).
data = {
["active", "Rick"]=>["2019-07-09", "2019-07-10"],
["active", "Morty"]=>["2019-07-09", "2019-07-10"],
["active", "Summer"]=>["2019-07-09", "2019-07-10"],
["inactive", "Rick"]=> ["2019-07-01", "2019-07-02", "2019-07-03"],
["inactive", "Summer"]=>["2019-07-15"]
}
Есть ли способ переписать этот запрос, чтобы я мог получить данные в нужной структуре?