微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ruby-on-rails – Rails schema.rb不包含新的自定义Postgres函数

我刚刚通过常规迁移创建了一个新的自定义Postgres功能.
class CreateBestBowlingfigureFunction < ActiveRecord::Migration
  def change
    execute "CREATE OR REPLACE FUNCTION ......"
  end
end

迁移后,schema.rb中不提供此新功能.

根据官方文档,我使用命令db:schema:load在运行测试之前创建模式.

那么,在运行测试之前创建自定义函数的最佳做法是什么?

解决方法

schema.rb does not handle(参见Rails 3.2.x指南的6.2节和Rails 4指南的7.2节)视图或自定义函数.我们的应用程序中有一个视图,架构不适用于它.

我们使用structure.sql来正确设置我们的视图,我的感觉同样适用于自定义函数.要使用structure.sql而不是schema.rb:

This is set in config/application.rb by the config.active_record.schema_format setting,which may be either :sql or :ruby.

您还可以使用schema.rb(对于常规表和索引)和structure.sql(对于自定义函数)的组合.要为测试环境设置此组合:

bundle exec rake db:schema:load
bundle exec rake db:structure:load

在此设置中,请注意必须手动维护structure.sql,而Rails将为您维护schema.rb.

原文地址:https://www.jb51.cc/ruby/268626.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐