Module: Uploader::Asset

Extended by:
ActiveSupport::Concern
Defined in:
lib/uploader/asset.rb

Defined Under Namespace

Modules: ClassMethods

Instance Method Summary collapse

Instance Method Details

#fileupload_create(params, _request = nil) ⇒ Object

Save asset Usage:

class Asset < ActiveRecord::Base
  include Uploader::Asset

  def fileupload_create(params, request = nil)
    self.user = request.env['warden'].user
    super
  end
end


52
53
54
55
56
57
58
59
60
# File 'lib/uploader/asset.rb', line 52

def fileupload_create(params, _request = nil)
  self[Uploader.guid_column] = params[:guid]
  return false unless update(self.class.fileupload_assetable_options(params))

  if fileupload_destroy_other_on_singular?(params)
    self.class.fileupload_find_assets(params).where.not(id: id).destroy_all
  end
  true
end

#fileupload_destroy(_params, _request = nil) ⇒ Object

Destroy asset Usage (cancan example):

class Asset < ActiveRecord::Base
  include Uploader::Asset

  def fileupload_destroy(params, request = nil)
    ability = Ability.new(request.env['warden'].user)
    if ability.can? :delete, self
      super
    else
      errors.add(:id, :access_denied)
    end
  end
end


88
89
90
# File 'lib/uploader/asset.rb', line 88

def fileupload_destroy(_params, _request = nil)
  destroy
end

#fileupload_destroy_other_on_singular?(params) ⇒ Boolean

Returns:

  • (Boolean)


62
63
64
65
66
67
68
69
70
# File 'lib/uploader/asset.rb', line 62

def fileupload_destroy_other_on_singular?(params)
  return unless params[:singular].to_s.downcase == 'true'
  return true if params[:guid].present?

  [
    params["#{Uploader.assetable_column}_id"],
    params["#{Uploader.assetable_column}_type"]
  ].all?(&:present?)
end

#to_fileuploadObject

Serialize asset to fileupload JSON format



94
95
96
97
98
99
100
101
102
103
# File 'lib/uploader/asset.rb', line 94

def to_fileupload
  {
    id: id,
    name: filename,
    content_type: content_type,
    size: size,
    url: url,
    thumb_url: thumb_url
  }
end