0

아래의 마이그레이션 파일은 오류없이 성공적으로 실행되며 열조차 생성되지만 이상하게 데이터가 업데이트되지 않습니다.이상한 레일 마이그레이션 동작 - 마이그레이션은 성공했지만 여전히 데이터는 채워지지 않습니다.

코드를 레일즈 콘솔에서 실행하면 (생성 열은 무시함) 매우 훌륭하게 작동합니다. 모든 설명 :

class AddSubjectListToTestType < ActiveRecord::Migration 
    def change 
    add_column :test_types, :subject_list, :integer, array:true, default: [] 

    type_hash = { 
     "NEET" => ["Physics" , "Chemistry", "Botany", "Zoology"], 
     "JEE" => ["Physics", "Chemistry", "Mathematics"], 
     "CET" => ["Physics", "Chemistry", "Mathematics"] 
    } 
    TestType.all.each do |test_type| 
     type_hash[test_type.name].each do |subject| 
      test_type.subject_list << Subject.find_by_name(subject).id 
     end 
     test_type.save 
    end 
    end 
end 
+2

모든 'test_types'를 반복하므로 내 첫 질문은 데이터베이스에 얼마나 많은 것들이 있습니까? BTW 마이그레이션을 모델과 결합하는 것이 좋지 않습니다. 모델은 변경 될 수 있으며 마이그레이션은 수행되지 않습니다. –

+0

테스트 유형에 3 개의 레코드 만 있고 세 개의 레코드 모두 question_count_per_subject 키에 나열된 이름을가집니다. –

답변

0

가장 먼저 확인할 항목은 development.log 파일이며 맨 아래까지 스크롤하여 최신 항목을 찾습니다.

여기 https://apidock.com/rails/ActiveRecord/ConnectionAdapters/SchemaStatements/add_column

밖으로 다른 물건을 모두 받아 모델로 이동 열을 추가하는 방법은 다음과 같습니다.

+0

이미 열을 추가 할 수 있습니다. 이제 코드를 모델로 이동하면 기본 데이터 세트를 어떻게 생성합니까? –

+0

오, 당신이 어떤 유형의 데이터 세트를 생성하기 위해 그것을 사용하려한다는 것을 깨닫지 못했습니다. 대신 db/seeds.rb를 사용하십시오. 따라서 기본적으로 열을 만든 다음 db/seeds.rb 파일을 채운 다음 레일스 4에 있으면 rails db : seed (rails 5.x) 또는 rake db : seed를 실행합니다. 이렇게하면 데이터베이스에 데이터를 채울 수 있습니다 당신이 거기에 원하는 초기 데이터. – Scott

+0

여기에 db/seeds.rb를 사용하여 데이터베이스를 채우는 방법에 대한 정보가있는 링크가 있습니다. http://www.xyzpub.com/en/ruby-on-rails/3.2/seed_rb.html – Scott