生成development_structure.sql的Rails - 转储的顺序

时间:2012-12-10 16:25:05

标签: ruby-on-rails activerecord oracle11g

我使用的是Rails 3.2.8并且

config.active_record.schema_format = :sql 

在我的config / application.rb。

在Oracle 11g数据库中,我已经定义了一个具有依赖于用户定义函数的虚拟列的表:

CREATE TABLE BAR (
  ID NUMBER(19,0) NOT NULL,
  STATUS NUMBER(19, 0) DEFAULT 1,
  CALCULATED_STATUS NUMBER(19,0) GENERATED ALWAYS AS (MY_FUNCTION(STATUS)) VIRTUAL)

当Rake执行db:test:clone_structure(任务:TOP =>默认=> spec => db:test:clone_structure)时,我正在点击:

OCIError:ORA-00904:" FOO"。" MY_FUNCTION":无效标识符:CREATE TABLE" BAR" (...

我认为发生的事情是db:structure:dump在函数之前导出表,所以在develop_structure.sql中,CREATE FUNCTION MY_FUNCTION出现在CREATE TABLE BAR语句之后。

我是否必须进入和monkeypatch db:structure:dump如何工作?

感谢。

1 个答案:

答案 0 :(得分:1)

我最终在github.com/rsim/oracle-enhanced中找到了适用的源代码,并在我进入配置/初始化器的文件中覆盖了structure_dump和structure_dump_db_stored_code方法。