的顺序,我用Rails 3.2.8,并有Rails的生成development_structure.sql - 自卸
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)
当耙执行分贝:测试:clone_structure(任务:TOP =>默认=>规范=>分贝:测试:clone_structure),我打:
OCIError:ORA-00904: “FOO” “创建my_function”:无效的标识符:CREATE TABLE “BAR”(...
我认为正在发生的事情是db:structure:dump在开发中的函数之前导出表structure.sql,CREATE FUNCTION MY_FUNCTION出现在CREATE TABLE BAR语句之后。
我是否必须进入monkeypatch db:structure:dump如何工作?
谢谢。
我发现Rails架构翻车机非常天真,很容易被任何不是表格的东西所迷惑。我不得不做大量的补丁来处理触发器,视图和全文索引,而不会完全爆炸。不过,我希望你能找到一个标准的解决方案。 – tadman
你通常在哪里制作补丁?我一直在寻找解决这个问题的方法,但我一直在发现自己达到了相同的结论。 – ayang
第一步是创建一个可以完成这个工作的'config/initializer'文件。如果它有效并且你想正式化它,那么把它转换成一个完全成熟的宝石。 – tadman