我注意到 Rails 在开发数据库中创建触发器而不是在测试数据库中创建触发器,因为它是从 schema.rb 创建测试数据库而不是运行迁移。我有一个触发器(作为迁移)并且需要测试它是否正确,我该怎么做?我尝试手动将触发器添加到测试数据库,但没有奏效。
问问题
1284 次
2 回答
5
默认情况下,rails 使用独立于数据库的 schema.rb 设置测试数据库,它不理解触发器之类的东西。
如果您更改config.active_record_schema_format
为:sql
then rails 将转储代表开发数据库结构的原始 SQL 并使用它来重新创建测试数据库。此转储放置在 development.sql 中,然后使用它代替 schema.rb
此转储是使用您的数据库提供的命令行工具完成的,因此将尊重活动记录不知道的触发器等功能
于 2012-04-05T18:22:59.737 回答
0
如果你更喜欢 Ruby 转储而不是 SQL 转储,你可以试试这个 gem:
https://github.com/jovoto-team/trackless_triggers
它支持 mysql 的转储触发器和函数。
于 2013-03-05T15:14:08.680 回答