5

我注意到 Rails 在开发数据库中创建触发器而不是在测试数据库中创建触发器,因为它是从 schema.rb 创建测试数据库而不是运行迁移。我有一个触发器(作为迁移)并且需要测试它是否正确,我该怎么做?我尝试手动将触发器添加到测试数据库,但没有奏效。

4

2 回答 2

5

默认情况下,rails 使用独立于数据库的 schema.rb 设置测试数据库,它不理解触发器之类的东西。

如果您更改config.active_record_schema_format:sqlthen 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 回答