일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- Hadoop
- carrierwave
- fileUploader
- Ruby
- programming
- RoR
- form
- programmingTip
- 전화영어
- 점심영어스터디
- Migration
- rubyonrails
- java
- activerecord
- share
- minitest
- test
- fixture
- 삽질기
- transaction
- Linux
- Shell
- max중첩
- apache spark
- Ruby on Rails
- mysql
- Scala
- Rails
- uploader
- TIP
- Today
- Total
아침바라기의 이야기
[ROR] Carrierwave uploader 기본 사용법 본문
1. Paperclip
2. Carrierwave
3. dragonfly레일즈 툴박스 참고
그럼 carrierwave 기본 사용법에 대해 알아보자.
우선 설치방법이다.
2. Gemfile에 추가
그럼 이제 어떻게 사용하지?
예를 들어 설명해보겠다.
모 웹사이트 구축중에 사용자 프로필에 프로필 사진을 업로드 기능을 만든다고 가정하자.
우리가 미리 정의한 Active record 클래스 이름은 UserProfile이다.
1. UserProfile 클래스에 프로필 사진인 photo를 추가하고 내가 만든 업로더를 마운트 시킨다
class UserProfile < ActiveRecord::Base
# 프로필 사진과 업로더 클래스 이름을 파라미터로 넘긴다. mount_uploder :photo, PhotoUploader
2. PhotoUploader를 만들어준다.
class PhotoUploader < CarrierWave::Uploader::Base
def store_dir
# 파일 저장할 path를 리턴한다
end
end
3. UserProfileController 의 user_profile 파라미터 permit에 photo 필드 추가
def user_profile
params.require(:user_profile).permit(:photo)
end
4. erb 파일에 file field 선언
<%= form_for @user_profile, html: { multipart: true } do |f| %>
<%= f.file_field :photo %>
<% end %>
5. 끝!
그리고 이제 이미지를 하나 아무거나 업로드해보자.
그럼 user_profiles 테이블에 photo 컬럼에 업로드한 파일 이름이 기본값으로 들어가 있는 것을 확인할 수 있다.
여기에 이미지 삭제를 해야한다고 생각해보자.
어떻게 해야할까??
답은 간단하다. 체크 박스로 remove_{마운트한 필드 이름} 으로 추가하고 폼을 서밋하면 된다. carrierwave가 알아서 삭제해준다.
<label>
<%= f.check_box :remove_photo %> 프로필 삭제
</label>
이러면 DB에 null 값으로 들어간 것을 확인할 수 있다.
만약, controller 등 에서 파일을 직접 지우고 싶다면 remove_photo 메소드를 를 호출해주면 된다.
@user_profile.remove_photo!
참으로 레일즈스러운 삭제 방법이다.
참고
- Carrierwave 업로더 공식 홈: https://github.com/carrierwaveuploader/carrierwave
- 레일즈 툴박스 파일업로더 다운로드 순위: https://www.ruby-toolbox.com/categories/rails_file_uploads
'개발이야기 > Ruby on Rails' 카테고리의 다른 글
[Rails] Minitest를 이용한 모델 테스트 팁 (0) | 2015.10.23 |
---|---|
[Rails] 트랜잭션 사용법 (0) | 2015.10.21 |
Carrierwave Uploder로 동적 이미지 version 생성법 (0) | 2015.10.07 |
[ROR][공유] Rails idoms (0) | 2015.10.05 |
rails에서 단일 Form에서 동적으로 여러개 객체를 넣는 방법 (0) | 2015.09.17 |