【发布时间】:2019-07-26 16:42:38
【问题描述】:
我正在尝试使用类方法来更新我已修改并存储在数组中的许多记录;我拼凑了一种方法来做到这一点,但它看起来很老套,并且使用我阅读的更新方法已被贬值。
def big_update
items = Table.all
saves=[]
items.each do |item|
item.value = rand(10)
saves << item.as_json
end
saves = Hash[*saves.map{ |p| [p["id"], p] }.flatten]
self.update(saves.keys, saves.values)
end
关键是我希望只访问数据库一次以保存所有这些,而不是每次迭代都访问它。
我正在寻找一种更优雅的方式来做到这一点,所以任何建议都将不胜感激
【问题讨论】:
-
您是否尝试将
value列设置为 0 到 9(含)之间的随机数,而忽略其他所有内容? -
@muistooshort 对于所有意图和目的,是的。实际上,我是从电子表格中获取值,对其进行转换,然后使用结果来更新表格,但我认为这个示例案例会更容易阅读。
-
如果您已经在内存中有数据(即您已经解析了一些电子表格),那么您所拥有的几乎就是它的样子。如果数据已经在数据库中,那么您可以执行一次 SQL 更新并使用数据库的
rand或random函数。您还可以将电子表格转换为 CSV,使用数据库的 CSV 导入工具导入 CSV,然后执行 UPDATE 设置随机数。所以取决于你有多少数据以及它在哪里。希望这一点帮助。
标签: ruby-on-rails ruby-on-rails-4 activerecord