2

내가 내 마이그레이션이있다 : 나는 dB/schema.rb에 살짝 때 내가 대신 이것을보고schema.rb 지수는

class CreateCategories < ActiveRecord::Migration 
    def up 
    create_table :categories do |t| 
     t.integer :parent_id 
     t.string :title, :null => false 
    end 
    execute('CREATE UNIQUE INDEX ix_categories_root_title ON categories (title) WHERE parent_id IS NULL') 
    end 
    def down 
    drop_table :categories 
    end 
end 

을하지만 :

ActiveRecord::Schema.define(:version => 20110808161830) do 
    create_table "categories", :force => true do |t| 
    t.integer "parent_id" 
    t.string "title", :null => false 
    end 
    add_index "categories", ["title"], :name => "ix_categories_root_title", :unique => true 
end 

어느 분명히 똑같은 것이 아니고 잘못되었습니다. 어쨌든 schema.rb가 동일한 색인을 작성하도록 강요합니까? 레일즈 3.1 이전에 postresql을 사용하고 있습니다.

답변

1

나는 문제의 정확한 이유를 모르겠지만, 당신이 Btw는

config.active_record.schema_format = :sql 

SQL

에서 스키마를 저장하는 것입니다 경우 당신은 확실히 당신의 인덱스를 저장할 수있는 DB를 당신은 사용합니까? 사실 이것은 레일 문제보다 DB 드라이버의 문제와 더 비슷합니다. 예상대로

config.active_record.schema_format = :sql 

그러나 단순히이 기능을 활성화하면 작동하지 않습니다 그가 당신의 application.rb 파일에이 설정 옵션을 설정 말했을 때

+0

PostgreSQL을 – sthapit

+0

레일 3.1 사전 데이터베이스 엔진 기능의 기본 집합을 지원합니다 내가 레일에있어, 그래서 유일한 해결책은 덤프하는 것입니다 SQL의 스키마. 유일한 단점은 읽을 수있는 스키마가 손실된다는 것입니다. 그러나 모든 고급 색인을 확실히 확보 할 수 있습니다. – iafonov

+0

"config.active_record.schema_format = : sql"을 application.rb에 넣은 후에도 sql에서 스키마를 만들 수 없습니다. 누군가 도울 수 있습니까? http://stackoverflow.com/questions/7034977/how-to-create-schema-in-sql – sthapit

관련 문제