我正在使用Postgres DB和Rails v4.1.6
我有一个包含start_time
列的表格。
我希望start_time
列为非null,并且具有时间戳的默认值,该值将是created_by
中的值。
我的理解是created_by
(和updated_at
)的时间戳值是由Rails创建的,而不是由DB强制执行(如果这是错误的,请告诉我)。如果有办法匹配这两列?有没有办法让数据库执行它?
我现在唯一的解决方案是使用before_create过滤器(但我认为这两个值之间会存在不一致)。
答案 0 :(得分:1)
我要感谢@Alireza和@ nikkon226对这个问题的看法。
我现在使用的解决方案是修改before_create过滤器中的start_time。在before_create中(至少在Rails v4.1.6中),时间戳已经设置好了。最好修改before_create中的记录而不是after_create,因为它为我们节省了至少1次保存调用。
当然,使用此解决方案,我无法再为start_time验证存在,因为验证在save / create之前发生。
如果有人有更好的解决方案,请分享。