我正在尝试编写自己的时间戳方法,并在迁移期间运行。现有的方法会在字段上添加NOT_NULL约束,而我确实不希望这样做。
问题在于我有一个多模式数据库。每个主要客户都有自己的模式。当我们接受一个新客户时,我们创建一个新租户记录,然后为一个新创建的模式运行迁移。新模式应该是其他模式中表的精确副本,当然没有数据。
我运行的最后一次迁移使用的是稍旧版本的Rails。仍然是3版本系列但略旧。当它创建时间戳时,它们是可以为空的。当我最近在一个新版本的Rails上运行迁移时,所有字段都变成了NOT_NULL。
我的代码是按照更新记录时才填充updated_at的想法开发的(第三方应用程序和数据库“函数”创建记录)...创建记录的第三方应用程序和数据库函数在新模式上失败了。我已经手动删除了所有表上的NOT_NULL约束,但我不想将清理直接编写到我的迁移任务中,以便所有未来的表都得到修正。
我想最好的办法是将被更改的timestamps方法覆盖回到没有破坏现有代码的方法。
因此,我需要恢复/覆盖的原因就在这里...现在我的问题是...我该如何覆盖这个方法。我看不到明确的类路径,并且不确定如何覆盖它。
问题在于我有一个多模式数据库。每个主要客户都有自己的模式。当我们接受一个新客户时,我们创建一个新租户记录,然后为一个新创建的模式运行迁移。新模式应该是其他模式中表的精确副本,当然没有数据。
我运行的最后一次迁移使用的是稍旧版本的Rails。仍然是3版本系列但略旧。当它创建时间戳时,它们是可以为空的。当我最近在一个新版本的Rails上运行迁移时,所有字段都变成了NOT_NULL。
我的代码是按照更新记录时才填充updated_at的想法开发的(第三方应用程序和数据库“函数”创建记录)...创建记录的第三方应用程序和数据库函数在新模式上失败了。我已经手动删除了所有表上的NOT_NULL约束,但我不想将清理直接编写到我的迁移任务中,以便所有未来的表都得到修正。
我想最好的办法是将被更改的timestamps方法覆盖回到没有破坏现有代码的方法。
因此,我需要恢复/覆盖的原因就在这里...现在我的问题是...我该如何覆盖这个方法。我看不到明确的类路径,并且不确定如何覆盖它。
debugger
调用,步入timestamps方法,你应该能够获取文件位置。个人并不推荐这样做,因为这也可能会在未来的Rails版本中发生变化。 - maniek