module Attache::Rails::Model::ClassMethods

Public Instance Methods

attache_setup_column(name) click to toggle source
# File lib/attache/rails/model.rb, line 29
def attache_setup_column(name)
  case coltype = column_for_attribute(name).type
  when :text, :string, :binary
    serialize name, JSON
  end
rescue Exception
end
has_many_attaches(name) click to toggle source
Calls superclass method
# File lib/attache/rails/model.rb, line 47
def has_many_attaches(name)
  attache_setup_column(name)
  define_method "#{name}_options",    -> (geometry, options = {}) { Hash(class: 'enable-attache', multiple: true).merge(attache_field_options(self.send(name), geometry, options)) }
  define_method "#{name}_urls",       -> (geometry)               { attache_field_urls(self.send(name), geometry) }
  define_method "#{name}_attributes", -> (geometry)               { attache_field_attributes(self.send(name), geometry) }
  define_method "#{name}=",           -> (value)                  { super(attache_field_set(Array.wrap(value))) }
  after_save                          ->                          { attache_update_pending_diffs(self.send("#{name}_was"), self.send("#{name}"), self.attaches_to_backup ||= [], self.attaches_discarded ||= []) }
  after_destroy                       ->                          { attache_update_pending_diffs(self.send("#{name}_was"), [], self.attaches_to_backup ||= [], self.attaches_discarded ||= []) }
end
has_one_attache(name) click to toggle source
Calls superclass method
# File lib/attache/rails/model.rb, line 37
def has_one_attache(name)
  attache_setup_column(name)
  define_method "#{name}_options",    -> (geometry, options = {}) { Hash(class: 'enable-attache', multiple: false).merge(attache_field_options(self.send(name), geometry, options)) }
  define_method "#{name}_url",        -> (geometry)               { attache_field_urls(self.send(name), geometry).try(:first) }
  define_method "#{name}_attributes", -> (geometry)               { attache_field_attributes(self.send(name), geometry).try(:first) }
  define_method "#{name}=",           -> (value)                  { super(attache_field_set(Array.wrap(value)).try(:first)) }
  after_save                          ->                          { attache_update_pending_diffs(self.send("#{name}_was"), self.send("#{name}"), self.attaches_to_backup ||= [], self.attaches_discarded ||= []) }
  after_destroy                       ->                          { attache_update_pending_diffs(self.send("#{name}_was"), [], self.attaches_to_backup ||= [], self.attaches_discarded ||= []) }
end