[Rails] Active Storage를 통해 확장자 validate를 만들 때 주의사항
3519 단어 RubyRailsActiveStorage
개시하다
제목과 같이 Active Storage에서 확장자 관련validate를 만든 후 User가 서명하는 동안 오류가 발생했습니다.
이벤트
User 모델에서 Active Storage에 업로드된 이미지에 대한 확장자를 지정하는validate를 다음과 같은 느낌으로 만듭니다.
user.rbclass User < ApplicationRecord
has_one_attached :image
validate :image_content_type
def image_content_type
extension = ['image/png', 'image/jpg', 'image/jpeg']
errors.add(:image, "の拡張子が間違っています") unless image.content_type.in?(extension)
end
그러나 이후 사용자를 새 계정에 등록시키려면 다음과 같은 오류가 발생했습니다.content_type delegated to attachment, but attachment is nil
까닭
이번에 크리에이트 User 때는 이메일이랑 패스워드만 했어요.
물론 이미지가 파라메스를 타지 않기 때문image.attached?
은false
이다.
상기 오류는 이미지에attached가 없는데content_type
가 호출되어 발생한 오류입니다.
해결책 image.attached?
가 false
일 때validate를 하지 않으면 해결 방법
user.rbclass User < ApplicationRecord
has_one_attached :image
validate :image_content_type, if: :was_attached?
def image_content_type
extension = ['image/png', 'image/jpg', 'image/jpeg']
errors.add(:image, "の拡張子が間違っています") unless image.content_type.in?(extension)
end
def was_attached?
self.image.attached?
end
이렇게 되면 User는 순조롭게 create를 할 수 있습니다.
Reference
이 문제에 관하여([Rails] Active Storage를 통해 확장자 validate를 만들 때 주의사항), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/xusaku_/items/36a61e35b6cd863bbf9d
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
User 모델에서 Active Storage에 업로드된 이미지에 대한 확장자를 지정하는validate를 다음과 같은 느낌으로 만듭니다.
user.rb
class User < ApplicationRecord
has_one_attached :image
validate :image_content_type
def image_content_type
extension = ['image/png', 'image/jpg', 'image/jpeg']
errors.add(:image, "の拡張子が間違っています") unless image.content_type.in?(extension)
end
그러나 이후 사용자를 새 계정에 등록시키려면 다음과 같은 오류가 발생했습니다.content_type delegated to attachment, but attachment is nil
까닭
이번에 크리에이트 User 때는 이메일이랑 패스워드만 했어요.
물론 이미지가 파라메스를 타지 않기 때문image.attached?
은false
이다.
상기 오류는 이미지에attached가 없는데content_type
가 호출되어 발생한 오류입니다.
해결책 image.attached?
가 false
일 때validate를 하지 않으면 해결 방법
user.rbclass User < ApplicationRecord
has_one_attached :image
validate :image_content_type, if: :was_attached?
def image_content_type
extension = ['image/png', 'image/jpg', 'image/jpeg']
errors.add(:image, "の拡張子が間違っています") unless image.content_type.in?(extension)
end
def was_attached?
self.image.attached?
end
이렇게 되면 User는 순조롭게 create를 할 수 있습니다.
Reference
이 문제에 관하여([Rails] Active Storage를 통해 확장자 validate를 만들 때 주의사항), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/xusaku_/items/36a61e35b6cd863bbf9d
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
image.attached?
가 false
일 때validate를 하지 않으면 해결 방법user.rb
class User < ApplicationRecord
has_one_attached :image
validate :image_content_type, if: :was_attached?
def image_content_type
extension = ['image/png', 'image/jpg', 'image/jpeg']
errors.add(:image, "の拡張子が間違っています") unless image.content_type.in?(extension)
end
def was_attached?
self.image.attached?
end
이렇게 되면 User는 순조롭게 create를 할 수 있습니다.
Reference
이 문제에 관하여([Rails] Active Storage를 통해 확장자 validate를 만들 때 주의사항), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/xusaku_/items/36a61e35b6cd863bbf9d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)