2014-12-17 2 views
0

테이블에 열을 추가하려고합니다. 그러나created_at 열 앞에 스키마에 열을 추가하십시오.

class AddEmail < ActiveRecord::Migration 
    def change 
    add_column :apps, :email, :string, after: :website 
    end 
end 

내가 그것을 실행할 때, 새로 만든 이메일 열은 updated_at 후 마지막 열까지 모든 길을 간다 : 여기 내 마이그레이션 파일입니다

ActiveRecord::Schema.define(version: 20141217210326) do 

    # These are extensions that must be enabled in order to support this database 
    enable_extension "plpgsql" 

    create_table "apps", force: true do |t| 
    t.string "name" 
    t.string "iTunes" 
    t.string "website" 
    t.datetime "created_at" 
    t.datetime "updated_at" 
    t.string "email" 
    end 

end 

내가 원하는 것은입니다 웹 사이트와 created_at 열 사이에 이동할 새 전자 메일 열입니다. 어떻게해야합니까?

+1

당신은 postgresql을 사용하고 있습니까? 실제로 ALTER TABLE 문에서 명시적인 열 위치를 지원합니까? 이것은 https://wiki.postgresql.org/wiki/Alter_column_position –

+0

...이 아니라는 것을 암시하는 것으로 보입니다. 제안 된 해결 방법은 끝에 새로운 열을 추가 한 다음 데이터를 복사 한 다음에 열을 추가하는 것입니다. 그 다음에 올 콜에서부터 원본을 버리면 모든 것이 원하는 방식으로 정렬됩니다. 그게 문제가되는 것처럼 들리네. –

+0

이것이 중요한 이유가 있습니까? 그렇다면 항목을 다시 정렬하려면 마이그레이션을 수행해야합니다. 다른 옵션은'schema.rb'에서 컬럼 순서를 바꾸고'db : drop db : create db : schema : load'를 실행하는 것입니다. 참고 : 그러면 데이터베이스의 모든 데이터가 삭제됩니다. 그래서 주문이 정말로 중요한 이유는 내가 확신 할 수 없기 때문입니다. – engineersmnky

답변

1

Postgres는 테이블의 열 순서를 지원하지 않습니다. 프로덕션 환경에 코드가 없으면 apps 테이블을 만드는 원래 마이그레이션을 변경하십시오.

관련 문제