2013-11-23 2 views
0

저는 레일스를 처음 사용하고 레일스 생성을 사용하여 데이터베이스 구조를 변경하기위한 사용자 정의 마이그레이션을 만들었습니다. 여기에 제가 발행 한 명령이 있습니다 : rails g migration users. ActiveRecord 마이그레이션이 실행되지 않습니다.

지금,이 생성 된 파일에, 나는 inputed :

class Users < ActiveRecord::Migration 
    def change 
    add_column :first_name 
    add_column :last_name 
    remove_column :name 
    end 
end 

내가 갈퀴 DB를 실행 아무 일도 발생하지 마이그레이션 할 수 있습니다. 이 문제를 해결하려면 무엇을해야합니까?

+0

파일을 직접 작성한 경우 파일 이름의 시작 부분에 타임 스탬프를 생략했다고 생각합니다. 레일스는 데이터베이스의 테이블 (schema_migrations)에서 실행 된 마이그레이션을 기록하고 해당 타임 스탬프를 사용하여 마이그레이션을 식별합니다. 해당 타임 스탬프가 없으면 db : migrate는 마이그레이션을 건너 뜁니다. – AndyV

답변

2

전혀 실행되지 않습니까? 당신이 준 정보에 근거하여 말하기는 어렵습니다. 아마 더 독특한 이름으로 마이그레이션을 시도해야할까요? 다음과 같이 입력하십시오 :

rails g migration ConvertUsersNamesToSingleField 

같은 이름의 두 가지 마이그레이션이 멋지다는 것이 확실하지 않습니다. 그러나 Users과 같은 짧은 일반 이름은 여기에서 문제가 될 수 있습니다. 그리고 일반적으로 후손과 명확성을 위해 자세한 마이그레이션 이름을 사용하는 것이 좋습니다.

이 질문

이 아닌 고유 한 이름을 가진 마이그레이션이 작동하지 않는 것에 동의합니다 : Rails migrations with the same name


그러나 실행하는 경우에도,이 오류를 발생합니다. 이러한 열 호출에 테이블 이름을 포함해야하며 필드를 만들 때 유형을 지정해야합니다.

class ConvertUsersNamesToSingleField < ActiveRecord::Migration 
    def change 
    add_column :users, :first_name, :string 
    add_column :users, :last_name, :string 
    remove_column :users, :name 
    end 
end 
+0

정말 고마워요! 정확히 내가 필요했던 것 :) 이제 완벽하게 작동합니다. – Arun

관련 문제