leo*_*nel 14 ruby activerecord ruby-on-rails
我有一个名为货物的模型.我在发货表中添加了一些列,并且有些列应该在保存之前计算.所以现在我必须编辑每个记录并点击更新,以便新列计算和添加数据.
那么有没有办法对所有货件记录执行全局保存,以便可以添加数据?
before_save :default_values
def default_values
self.volume = 1 unless self.volume
self.kilograms = 1 unless self.kilograms
self.status = "Open" if self.status.blank?
if self.mode == "Air"
self.estimated_transit_time = self.etd_origin + 7.days
self.eta_place_of_delivery = self.etd_origin + 7.days
else
self.estimated_transit_time = self.etd_origin + (Place.find_by_city(self.place_of_loading).transit_time).days
self.eta_place_of_delivery = self.etd_origin + (self.estimated_transit_time).days
end
end
Run Code Online (Sandbox Code Playgroud)
Vic*_*tor 43
一个班轮:
Shipment.find_each(&:save)
Run Code Online (Sandbox Code Playgroud)
bas*_*gys 16
批量加载数据.切勿一次装入所有物品
Shipment.find_each(:batch_size => 1000) do |shipment|
shipment.save!
end
Run Code Online (Sandbox Code Playgroud)
然后,当您必须在迁移后计算某些字段或其他内容.只需将此作业添加到迁移中即可.
您可以创建这样的方法:
def self.save_all
Shipment.all.each { |shipment| shipment.save! }
end
Run Code Online (Sandbox Code Playgroud)
然后只需调用:
Shipment.save_all
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14527 次 |
| 最近记录: |