我遇到的问题是我有一个多模式的数据库.每个主要客户都获得自己的架构.当我们在新客户端上运行时,我们会创建一个新的租户记录,然后为新创建的架构运行迁移.
新模式应该是其他模式中表的精确副本,当然除了没有数据.
我运行的最后一次迁移是使用较旧版本的rails.仍然在3年代,但一个年长的微笑.当它创建时间戳时,它们是NulLable.
当我在前一天运行迁移时(在新的轨道上)……好吧所有的字段现在都是NOT_NulL
我的代码是在更新记录时仅填充了updated_at的想法而开发的…而不是在创建记录时. (第三方应用程序和数据库“函数”创建记录)..
创建记录的第三方应用程序和数据库函数正在落在新架构上……
我已经进入并手动删除了所有表上的所有NOT_NulL约束,但我不想将清理直接写入我的迁移任务,以便更新所有未来的表.
我认为最好的办法是覆盖已更改的timestamps方法,回到没有破坏现有代码的方法.
所以我需要恢复/覆盖…
我现在的问题是……如何覆盖该方法.我看不到它的明确的类路径,我不确定如何覆盖它..
class ActiveRecord::ConnectionAdapters::PostgresqlAdapter::tableDeFinition def timestamps(*args) options = args.extract_options! column(:created_at,:datetime,options) column(:updated_at,options) endend
正如马涅克所说.由于此“修复”,将忽略对rails的更新.
但他的首次提供也是如此.另外,为了适应他的修复,你需要回过头来进行迁移并用新代码替换“时间戳”.除此之外,您还必须替换所有未来自动生成的迁移.
我觉得这不适合DRY ..也不适合SPOT.
只是B小心!
总结以上是内存溢出为你收集整理的ruby-on-rails – Rails / Ruby如何覆盖迁移方法时间戳全部内容,希望文章能够帮你解决ruby-on-rails – Rails / Ruby如何覆盖迁移方法时间戳所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)