Iva*_*var 2 postgresql activerecord rspec ruby-on-rails rails-activerecord
使用Rails 3.2.18和Postgres,我有一些表,我已经为其创建了一个视图,以最小化ActiveRecord加载的数据.在应用程序中,一切似乎都正常运行,但当我尝试运行Rspec时,我得到:
ActiveRecord::StatementInvalid:
PG::UndefinedTable: ERROR: relation "properties_view" does not exist
Run Code Online (Sandbox Code Playgroud)
('properties_view'是'properties'表中的视图)
我该怎么做才能确保Rspec从Postgres正确加载视图?
Rails并不真正理解像视图这样的"高级"数据库概念,所以它们不会出现在你的schema.rb.当rspec设置其测试数据库时,它将schema.rb用于创建数据库模式,因为您将无法找到您的视图schema.rb,您将无法在测试数据库中找到您的视图,而rspec将使用这些视图并且一切都会崩溃.
解决方案是切换schema.rb到structure.sql.你应该能够更新你config/application.rb说:
config.active_record.schema_format = :sql
Run Code Online (Sandbox Code Playgroud)
然后执行a rake db:structure:dump生成structure.sql文件.完成后,schema.rb从文件系统和版本控制中删除,添加structure.sql,然后重试.
| 归档时间: |
|
| 查看次数: |
640 次 |
| 最近记录: |