earliest_employee = Employee.ignore_valid_datetime.where(bitemporal_id: id).order(:valid_from).first Timecop.freeze(earliest_employee.valid_from) do employee = Employee.find(id: id) end end employee.update!(name: "Tom") end
earliest_employee = Employee.ignore_valid_datetime.where(bitemporal_id: id).order(:valid_from).first Timecop.freeze(earliest_employee.valid_from) do employee = Employee.find(id: id) end end employee.update!(name: "Tom") end 9/1の情報を追加したい
earliest_employee = Employee.ignore_valid_datetime.where(bitemporal_id: id).order(:valid_from).first Timecop.freeze(earliest_employee.valid_from) do employee = Employee.find(id: id) end end employee.update!(name: "Tom") end 9/1の情報を追加したい 最も近い未来のレコードを探す
earliest_employee = Employee.ignore_valid_datetime.where(bitemporal_id: id).order(:valid_from).first Timecop.freeze(earliest_employee.valid_from) do employee = Employee.find(id: id) end end employee.update!(name: "Tom") end 9/1の情報を追加したい 起点となる日付に固定してイ ンスタンスを取得 最も近い未来のレコードを探す
earliest_employee = Employee.ignore_valid_datetime.where(bitemporal_id: id).order(:valid_from).first Timecop.freeze(earliest_employee.valid_from) do employee = Employee.find(id: id) end end employee.update!(name: "Tom") end 9/1の情報を追加したい 起点となる日付に固定してイ ンスタンスを取得 9/1に戻って更新 最も近い未来のレコードを探す
earliest_employee = Employee.ignore_valid_datetime.where(bitemporal_id: id).order(:valid_from).first Timecop.freeze(earliest_employee.valid_from) do employee = Employee.find(id: id) end end employee.update!(name: "Tom") end
earliest_employee = Employee.ignore_valid_datetime.where(bitemporal_id: id).order(:valid_from).first Timecop.freeze(earliest_employee.valid_from) do employee = Employee.find(id: id) end end employee.update!(name: "Tom") end 9/1として処理される 9/15として処理される 9/1として処理されるが、インスタンスは 9/15の時点のデータを保持する