我的数据库中有一个名为sessions
的表,其中包含两列(start_time
和end_time
),我的表中已有很多数据。然后我生成了一个迁移:
$ rails g migration AddDurationToSessions duration:integer
我的模型session.rb
如下所示:
class Session < ActiveRecord::Base
before_save :calc_duration
def calc_duration
return self[:end_time] - self[:start_time]
end
end
我的问题是:如何将calc_duration
应用于我表格中的所有旧元素?我是手动更新它们还是有最佳实践?
答案 0 :(得分:0)
您可以在迁移中执行此操作:
class AddDurationToSessions < ActiveRecord::Migration
def change
add_column :sessions, :duration, :integer
# Find and update all older session record
Session.find_each do |s|
# new duration
calc_duration = s.end_time - s.start_time
# update session with new duration
s.update(duration: calc_duration.to_i)
end
end
end