나는 이니셜 라이저의 Paperclip.interpoles를 사용하여 클립 클립 gem을 통해 업로드 된 파일의 사용자 정의 파일 이름을 만들려고합니다. 내가 가지고있는 문제는 파일을 업로드 할 때 파일 시스템에서 사용자 지정 파일 이름을 업데이트하는 것이지만 데이터베이스 파일 이름은 원본 파일의 이름으로 남아 있습니다. 이를 처리하기 위해 데이터베이스 속성을 재 할당해야하는 더 좋은 방법이 있습니까?종이 클립 보석과 데이터베이스의 사용자 정의 파일 이름 레일 2.3
0
A
답변
3
ActiveRecord에서 before_create
콜백을 사용해보세요. 클립은 ActiveRecord::Base#save
이 호출 될 때까지 첨부 된 리소스를 디스크에 쓰지 않으므로 사용자 지정 파일 이름을 만드는 데는 적절한시기 인 것 같습니다.
이렇게하려면 사용자 지정 파일 이름을 만드는 일반적인 방법을 등록하십시오. 이렇게하면 첨부 된 이미지의 이름이 변경되고 파일 시스템과 데이터베이스에서 찾을 수 있습니다.
사용자 지정 임의 파일 이름으로 이미지를 첨부하려는 모델이 있다고 가정 해 보겠습니다. 모델에서
: 모델의 또
has_attached_file :image
before_create :randomize_image_file_name
: 보호 또는 비공개로 콜백 메소드를 선언하는 좋은 연습 간주하지만
def randomize_image_file_name
extension = File.extname(image_file_name).downcase
self.image.instance_write(:file_name, "#{ActiveSupport::SecureRandom.hex(8)}#{extension}")
end
당신은 어디서나 당신이 원하는 당신의 방법을 선언 할 수 있습니다.
사용자 지정 임의 파일 이름으로 첨부 파일을 저장합니다.
희망이 도움이됩니다.