私は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 => default => spec => db:test:clone_structure) を実行すると、次のようになります。
OCIError: ORA-00904: "FOO"."MY_FUNCTION": 無効な識別子: CREATE TABLE "BAR" (...
db:structure:dump は関数の前にテーブルをエクスポートするので、development_structure.sql では、CREATE TABLE BAR ステートメントの後に CREATE FUNCTION MY_FUNCTION が表示されると思います。
db:structure:dump の仕組みをモンキーパッチする必要がありますか?
ありがとう。