进程表中有一个datetime类型的字段start_time。初始值设置为Time.zone.now。之后,不允许用户更改日期,只允许更改start_time字段的小时和分钟。
因此,向用户提供的编辑表单仅显示小时:分钟,如" 22:43"但是在提交表单时,字段值将更改为当前日期和时间。在控制器中,我使用标准rails语句来更新值:
@process = Process.find(params[:id])
@process.update(process_params)
在参数中,我将start_time作为" 20:40"
还尝试了change方法,但它没有保存更改而是回滚。
hour_minute = params[:process][:start_time].split(":")
@process.start_time.change({hour: hour_minute[0], min: hour_minute[1]})
我想只更新字段日期的小时和分钟应该保持不变。
答案 0 :(得分:2)
change
方法返回更改的时间或日期,但未自行更新活动记录。
您可以执行此操作以进行更新。
hour_minute = params[:process][:start_time].split(":")
@process.update(start_time: @process.start_time.change(hour: hour_minute[0], min: hour_minute[1]))
希望,这会对你有帮助。