module Slices::HasAttachments

Public Instance Methods

_attachment_asset_ids() click to toggle source
# File lib/slices/has_attachments.rb, line 79
def _attachment_asset_ids
  attachment_asset_ids = self.class.attachment_fields.collect do |attachments|
    [send(attachments)].flatten.collect do |attachment|
      attachment.asset_id
    end.reject {|i| i.nil? }
  end.flat_map {|i| i }
end
as_json(options = nil) click to toggle source
Calls superclass method
# File lib/slices/has_attachments.rb, line 59
def as_json options = nil
  super.merge(attachments_as_json)
end
attachment_asset_ids() click to toggle source
# File lib/slices/has_attachments.rb, line 70
def attachment_asset_ids
  _attachment_asset_ids.tap do |asset_ids|
    if respond_to? :slice_attachment_asset_ids
      asset_ids.concat slice_attachment_asset_ids
    end
    asset_ids.uniq!
  end
end
attachments_as_json() click to toggle source
# File lib/slices/has_attachments.rb, line 63
def attachments_as_json
  self.class.attachment_fields.inject({}) do |hash, name|
    hash[name] = send(name).map(&:as_json)
    hash
  end
end
remove_asset(asset) click to toggle source
Calls superclass method
# File lib/slices/has_attachments.rb, line 87
def remove_asset(asset)
  super if defined?(super)

  asset_id = asset.id

  self.class.attachment_fields.each do |field_name|
    send(field_name).each do |attachment|
      attachment.destroy if attachment.asset_id == asset_id
    end
  end
end