Carrierwave 扩展白名单错误消息
Carrierwave extension whitelist error message
我正在使用带有 Rails 5 的载波。在我的扩展白名单中,允许的类型是 jpg、jpeg 和 png。
默认的错误信息是:
"You are not allowed to upload \"gif\" files, allowed types: jpg, jpeg, png"
我不需要自定义,因为消息很好,除了 \"gif\"。我想要的是:
"You are not allowed to upload gif file, allowed types: jpg, jpeg, png"
如何实现?
根据@mizurnix 建议的解决方案进行回答。它对我有用。
覆盖头像上传器(app/uploaders/avatar_uploader.rb)中的check_extension_whitelist!
方法,即在avatar_uploader.rb.
中添加以下代码
private
def check_extension_whitelist! new_file
extension = new_file.extension.to_s
if extension_whitelist && !whitelisted_extension?(extension)
raise CarrierWave::IntegrityError, I18n.translate(:"errors.messages.extension_whitelist_error", extension: extension, allowed_types: Array(extension_whitelist).join(", "))
end
end
def whitelisted_extension? extension
downcase_extension = extension.downcase
Array(extension_whitelist).any? { |item| downcase_extension =~ /\A#{item}\z/i }
end
我正在使用带有 Rails 5 的载波。在我的扩展白名单中,允许的类型是 jpg、jpeg 和 png。
默认的错误信息是:
"You are not allowed to upload \"gif\" files, allowed types: jpg, jpeg, png"
我不需要自定义,因为消息很好,除了 \"gif\"。我想要的是:
"You are not allowed to upload gif file, allowed types: jpg, jpeg, png"
如何实现?
根据@mizurnix 建议的解决方案进行回答。它对我有用。
覆盖头像上传器(app/uploaders/avatar_uploader.rb)中的check_extension_whitelist!
方法,即在avatar_uploader.rb.
private
def check_extension_whitelist! new_file
extension = new_file.extension.to_s
if extension_whitelist && !whitelisted_extension?(extension)
raise CarrierWave::IntegrityError, I18n.translate(:"errors.messages.extension_whitelist_error", extension: extension, allowed_types: Array(extension_whitelist).join(", "))
end
end
def whitelisted_extension? extension
downcase_extension = extension.downcase
Array(extension_whitelist).any? { |item| downcase_extension =~ /\A#{item}\z/i }
end