2012-05-08 4 views
0

내 응용 프로그램에는 (트위터와 같은 종류의) 게시 할 수 있고 답장을 추가 할 수있는 메시지가 있으며 그렇게하기 위해 ancestry gem을 사용하고 있습니다.rake db : migrate를 실행하려고 할 때이 오류가 계속 발생하는 이유는 무엇입니까?

schema.rb 파일에 내 코드 (I이이 테이블마다 당신이 갈퀴 DB를 실행 생성하는 데 사용하는 파일입니다 생각한다.! 마이그레이션을하지만 난이 문제가 될 수 (틀릴 수도)

create_table "messages", :force => true do |t| 
    t.string "content" 
    t.integer "user_id" 
    t.datetime "created_at", :null => false 
    t.datetime "updated_at", :null => false 
    t.string "ancestry" 
    end 

    add_index "messages", ["user_id", "created_at", "ancestry"], :name => "index_messages_on_user_id_and_created_at_and_ancestry" 

답변

0

아, 지금 내가 볼 : 당신은 schema.rb에 코드를 추가하지만 마이그레이션을 사용했다 schema.rb에서 수동으로 추가 코드를 제거하고 실행합니다./이전/타임 스탬프를

rails g migration CreateMessages 

당신은 파일 DB를 얻을 수 있습니다 ] _create_messages.rb.를 채우십시오.코드로 메소드를 실행 한 다음 실행하십시오 (사용자를 위해 작성해야하지만 비어 있어야합니다. 이전 버전의 경우) up라는 :

rake db:migrate 

이 명령은 schema.rb 자체로 변경됩니다. 수동으로 변경하지 마십시오! (숙련 된 Rails 프로그래머가 될 때까지).

+0

흠 나는 나를 위해 일하지 않았다. 나는 add_index 메서드에서 t.string "ancestry"와 "ancestry"를 꺼내서 원래 상태로 다시 변경했습니다. 그럼 난 레일 그릴 이주 CreateMessages 그리고 그것은 나를 위해 rb 파일을 만들었습니다. 그런 다음 위의 모든 코드를 복사하여 붙여 넣습니다. 이게 맞습니까? – BigBoy1337

+0

잠깐. * 다시 원래 상태로 변경 * - 무슨 뜻입니까? 이미 테이블이 있고 인덱스를 추가하고 싶습니까? 테이블에 인덱스를 추가하기 만하면'up' /'change' 메쏘드는'add_index ....'만 포함해야합니다. 또한'up' 메소드가 있다면'remove_index, : name => "..."'으로'down' 메소드를 채 웁니다. – jdoe

+0

@ user1123905, 거의 정확함. 새로운 rb 파일의 위로, add_column과 add_index를 호출해야합니다. 왜냐하면 jdoe는 이미 테이블을 가지고 있기 때문입니다. –