0

rails4 앱에서 모델의 이미지 필드에서 유효성을 검사하는 동안 문제가 발생했습니다.레일/종이 클립 객체 생성 문제

class ModelA < ActiveRecord::Base 
    validates :name, presence: true 
    validates :logo, presence: true 
    has_attached_file :logo, styles: { 
    thumb: '100x100>', 
    square: '200x200#' 
} 

마이그레이션 할 때이 모델의 새 인스턴스가 만들어집니다.

def migrate(direction) 
    super 
    if direction == :up 
     obj = Model1.create!(:name => "Test") 

필수 필드가 지정되지 않았으므로 실패합니다. 명시 적으로 기본 이미지를 지정하면 표에 아직 필요한 열이 없습니다.

마이그레이션을 수행하기 전에 이미지 (이 경우 로고) 유효성 검사를 제거한 다음 해당 이미지 파일과 이름과 같은 세부 사항을 지정하면이 마이그레이션이 실행됩니다. 이 모델을 설치하는 더 좋은 방법이 있습니까?

+1

자세한 내용을 공유하십시오. 여기서 무엇을 이루려고합니까? 좋은 모범이 될 수 있습니다. –

+1

http://stackoverflow.com/questions/13122791/rails-validation-in-model-vs-migration?answertab=oldest#tab-top –

답변

0

나는 이것을 알아 냈습니다. 문제는 마이그레이션에있었습니다. 로고 마이그레이션 (유효성 검사뿐 아니라)이 마이그레이션에서이 객체 생성 이후에 추가되었습니다. Model1.create에 로고를 추가했습니다! 이 마이 그 레이션을 이동 한 후이 마이 그 레이션을 이동하여 오류를 해결합니다.

는 따라서, 내 마이그레이션은 대략 다음과 같습니다
def change 
    create_table :... do |t| 
    t.string :name 
    t.timestamps 
    end 

는 클립 열

def self.up 
    change_table :... do |t| 
    t.attachment :logo 
    end 
end 

첨가하여 그들 뒤에오고 다른 마이그레이션 모델을 추가했다.

def migrate(direction) 
    super 
    if direction == :up 
    logo_img = File.open('app/assets/images/logo-big.png', 'rb') 
    Model1.create!(:name => "TestObj", :logo => logo_img)