我有一个模型调用view()->withBar('Foo');
,它包含每日数据
它有以下专栏。
DataIndicator
它有很多数据,但现在我需要改变一些数据。
如何按日期大量更新其值?
EX:
原文
:id => :integer,
:date => :datetime,
:dau => :integer,
:login_count => :integer
现在我有一个哈希值,可以参考修改原始数据。
喜欢这个
{ "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
答案 0 :(得分:0)
我想我误解了你的问题。 如果您只选择所有DataIndicator记录,然后检查哈希是否包含数据,那会不会更容易?
DataIndicator.all.each do |di|
date = di.date.strftime("%Y-%m-%d")
to_update = update_date[date]
next if to_update.blank?
to_update.each do |field,value|
di.send("#{field}=".to_sym, value)
end
di.save!
end
答案 1 :(得分:0)
这对我有用。
对于Rails 4 +
DataIndicator.where(["date(date) = ?"], "2017-01-01").update_all(dau: 5, login_count: 5)