ruby-on-rails – 为什么rake db:在Rails中迁移不会向模式文件添加函数?

我最近通过迁移将一些sql函数添加到我的数据库,它们工作完美.代码作品,数据库作品,测试不. schema.rb文件告诉我它是最新版本(它是正确的),但它只包含表和索引的定义,而不是我添加函数.

我在迁移中通过“execute()”方法添加了这些功能,并且需要它们在测试数据库中进行RSpec测试传递(公司策略规定我无法提交此更改,直到此修复为止).

有人知道为什么会发生这种情况,还是如何解决?我可以手动进入MySQL命令行并添加功能,但是下次有人在执行db:test:prepare时会被删除.我需要一个可以自动化的解决方案.

感谢任何帮助和回复,

-Mike Trpcic

解决方法

schema.rb是Ruby模式格式,它不支持功能或许多其他更高级的功能.将格式更改为纯sql(在environment.rb中),您应该很好.
config.active_record.schema_format = :sql

编辑:在Mike评论之后,我做了一些挖掘.将Rake任务转储到MysqL和Oracle的ActiveRecord连接适配器中. MysqL不是很聪明,只能转储表结构,忽略其他一切. Postgresql,sqlite,sql Server和Firebird调用到供应商提供的可执行文件.

MysqLdump doesn’t support dumping stored procedures之前版本5.0.13.

我环顾了Rails灯塔,但寻找公开的门票比它应该更难.如果没有其他人提出错误,您可以考虑这样做,尽管没有补丁,但是任何人都不会有任何工作.

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...