1
我有一個模型調用DataIndicator
,它包含日常數據,Rails更新海量數據
並且它有以下列。
:id => :integer,
:date => :datetime,
:dau => :integer,
:login_count => :integer
它有很多數據,但現在我需要改變它的一些。
如何按日期大量更新其價值?
EX:
原來
{ "id" => 1, "date" => 2017-01-01 00:00:00 UTC, "dau" => 5 , "login_count" => 150 },
{ "id" => 2, "date" => 2017-01-02 00:00:00 UTC, "dau" => 5 , "login_count" => 140 },
{ "id" => 3, "date" => 2017-01-03 00:00:00 UTC, "dau" => 5 , "login_count" => 300 }
應當使用更新的數據是一樣
update_date = {
"2017-01-01" => {
"dau" => 5,
"login_count" => 5,
},
"2017-01-02" => {},
"2017-01-03" => {
"dau" => 5,
},
...
}
正如你所看到的,update_date
不會包含所有的屬性,它可能只有一個甚至零個新數據。 更新此值的最佳方法是什麼?
我只能認爲是壞的。
像這樣
update_date.each do |k, v|
data_by_date = DataIndicator.where(date: DateTime.parse(k)).first
next if data_by_date.nil?
data_by_date.update(v)
end
這取決於'update_date'資料:什麼是大小,'多少相同的值dau'和'login_count' –