마이그레이션 파일 생성 중 기본값 할당


104
rails generate migration AddRetweetsCountToTweet retweets_count:integer 

좋아, 위의 줄을 사용하여 생성 된 파일에서 자동으로 코드를 생성하는 마이그레이션 파일을 생성하여 데이터 유형이 정수인 모델 트윗에 열을 추가합니다. 이제 마이그레이션 파일을 생성하는 동안 추가 된 열에 기본값을 추가하고 싶습니다. 가능합니까? 나는 그것을 봤지만 찾을 수 없었다. 사람들은 도움이 필요합니다.


주제에 대한 RailsGuide를 참조하십시오 : guides.rubyonrails.org/migrations.html 당신이 찾고있는 정보는 첫 번째 섹션에 있습니다 마이그레이션의 해부학
Austin Lin

1
무슨 말인지 정확히 알고 있습니다. 계속해서 기본값을 설정하려고했는데 정보를 찾는 것이 일종의 고통이었습니다. 베어 SQL을 생성하는 것이 더 쉬웠지만 버전 제어에는 마이그레이션이 없습니다.
Tass 2011

답변:


166

기본 마이그레이션 생성기 (기본 값을 처리하지 않습니다 열 수정은 지원하지만 할 수 있습니다 포함되지 defaultnull),하지만 당신은 당신의 자신의 발전기를 만들 수 있습니다.

rake db:migrate다음에 옵션을 추가하여 실행하기 전에 마이그레이션 파일을 수동으로 업데이트 할 수도 있습니다 add_column.

add_column :tweet, :retweets_count, :integer, :null => false, :default => 0

... 그리고 Rails API 읽기


9
답장 주셔서 감사합니다. 기본 마이그레이션 생성기가 기본값을 지정하기 위해 생성 된 마이그레이션 파일을 편집 할 필요가 없도록 기본값을 처리하는 옵션을 제공하면 좋을 것이라고 생각했습니다.
kxhitiz


9

예, 마이그레이션 생성기 명령에서도 'default'를 사용하는 방법을 볼 수 없었지만 "rake db : migrate"를 적용하기 전에 생성 된 마이그레이션 파일을 수정하여 다음과 같이 새 문자열 열에 대한 기본값을 지정할 수있었습니다.

class AddColumnToWidgets < ActiveRecord::Migration
  def change
    add_column :widgets, :colour, :string, default: 'red'
  end
end

이것은 내 '위젯'모델에 '색상'이라는 새 열을 추가하고 새 위젯의 기본 '색상'을 '빨간색'으로 설정합니다.


(이것은 Rails 4.2에있었습니다.)
MSC

4

전체 테이블을 만들기 위해 마이그레이션 파일에서 t.boolean : active, : default => 1을 시도했습니다. db를 체크인했을 때 마이그레이션을 실행 한 후 null로 만들었습니다. 내가 기본값을 "1"로 말했지만. 그 후 약간 마이그레이션 파일을 이와 같이 변경 한 다음 테이블 마이그레이션 파일 만들기에서 기본값을 설정하는 데 도움이되었습니다.

t.boolean : active, : null => false, : default => 1. 나를 위해 일했습니다.

내 Rails 프레임 워크 버전은 4.0.0입니다.


:default => false?
Christopher Oezbek 2015

2

먼저 모델 기본 사항에 대한 마이그레이션을 생성 한 다음 change_column ...

def change
    change_column :widgets, :colour, :string, default: 'red'
end
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.