Module: Uploadcare::Rails::Internal::ModelMacros
- Extended by:
- ActiveSupport::Concern
- Includes:
- FileUuidExtraction
- Included in:
- ActiveRecordHooks, MongoidHooks
- Defined in:
- lib/uploadcare/rails/internal/model_macros.rb
Constant Summary collapse
- GROUP_ID_REGEX =
/\b[0-9a-f]{8}\b-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-\b[0-9a-f]{12}\b~\d+/.freeze
Instance Method Summary collapse
- #build_uploadcare_file(attribute, client: nil) ⇒ Object
- #build_uploadcare_file_group(attribute, client: nil) ⇒ Object
Instance Method Details
#build_uploadcare_file(attribute, client: nil) ⇒ Object
15 16 17 18 19 20 21 22 23 24 |
# File 'lib/uploadcare/rails/internal/model_macros.rb', line 15 def build_uploadcare_file(attribute, client: nil) cdn_url = read_uploadcare_attribute(attribute).to_s return if cdn_url.empty? uuid = IdExtractor.call(cdn_url) cache_key = AttachedFile.build_cache_key(cdn_url) default_attributes = { cdn_url: cdn_url, uuid: uuid.presence } file_attributes = ::Rails.cache.read(cache_key).presence || default_attributes AttachedFile.new(file_attributes, client: client) end |
#build_uploadcare_file_group(attribute, client: nil) ⇒ Object
26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/uploadcare/rails/internal/model_macros.rb', line 26 def build_uploadcare_file_group(attribute, client: nil) cdn_url = read_uploadcare_attribute(attribute).to_s return if cdn_url.empty? group_id = IdExtractor.call(cdn_url, GROUP_ID_REGEX).presence cache_key = AttachedFiles.build_cache_key(cdn_url) files_count = FilesCountExtractor.call(group_id) default_attributes = { cdn_url: cdn_url, id: group_id, files_count: files_count } file_attributes = ::Rails.cache.read(cache_key).presence || default_attributes AttachedFiles.new(file_attributes, client: client) end |