Postgres的观点未被rspec认可
使用Rails 3.2.18和Postgres,我有一些表,我已经为其创建了一个视图,以最小化ActiveRecord加载的数据。 在应用程序中,一切似乎都正常运行,但当我尝试运行Rspec时,我得到:
ActiveRecord::StatementInvalid: PG::UndefinedTable: ERROR: relation "properties_view" does not exist
(’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
然后做一个rake db:structure:dump
来生成structure.sql
文件。 完成后,从文件系统和版本控制中删除schema.rb
,添加structure.sql
,然后重试。