ruby-on-rails – Rails / Ruby如何覆盖迁移方法时间戳
我正在尝试编写自己的时间戳方法,该方法在迁移期间运行.现在的那个现在在字段上添加了一个NOT_NULL约束,我真的不想要那个.
我遇到的问题是我有一个多模式的数据库.每个主要客户都获得自己的架构.当我们在新客户端上运行时,我们会创建一个新的租户记录,然后为新创建的架构运行迁移. 新模式应该是其他模式中表的精确副本,当然除了没有数据. 我运行的最后一次迁移是使用较旧版本的rails.仍然在3年代,但一个年长的微笑.当它创建时间戳时,它们是NULLable. 我的代码是在更新记录时仅填充了updated_at的想法而开发的…而不是在创建记录时. (第三方应用程序和数据库“函数”创建记录).. 我认为最好的办法是覆盖已更改的timestamps方法,回到没有破坏现有代码的方法. 所以我需要恢复/覆盖… 解决方法
把它放在一个猴子补丁……简单!
class ActiveRecord::ConnectionAdapters::PostgreSQLAdapter::TableDefinition def timestamps(*args) options = args.extract_options! column(:created_at,:datetime,options) column(:updated_at,options) end end 正如马涅克所说.由于此“修复”,将忽略对rails的更新. 但他的首次提供也是如此.另外,为了适应他的修复,你需要回过头来进行迁移并用新代码替换“时间戳”.除此之外,您还必须替换所有未来自动生成的迁移. 我觉得这不适合DRY ..也不适合SPOT. 只是B小心! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |